Releases: piskvorky/gensim
4.0.0beta
4.0.0beta, 2020-10-31
Main highlights
-
Massively optimized popular algorithms the community has grown to love: fastText, word2vec, doc2vec, phrases:
a. Efficiency
model 3.8.3
wall time / peak RAM / throughput4.0.0
wall time / peak RAM / throughputfastText 2.9h / 4.11 GB / 822k words/s 2.3h / 1.26 GB / 914k words/s word2vec 1.7h / 0.36 GB / 1685k words/s 1.2h / 0.33 GB / 1762k words/s In other words, fastText now needs 3x less RAM (and is faster); word2vec has 2x faster init (and needs less RAM, and is faster); detecting collocation phrases is 2x faster. 4.0 benchmarks.
b. Robustness. We fixed a bunch of long-standing bugs by refactoring the internal code structure (see 🔴 Bug fixes below)
c. Simplified OOP model for easier model exports and integration with TensorFlow, PyTorch &co.
These improvements come to you transparently aka "for free", but see Migration guide for some changes that break the old Gensim 3.x API. Update your code accordingly.
-
Dropped a bunch of externally contributed modules: summarization, pivoted TFIDF normalization, wrappers for 3rd party libraries: Mallet, scikit-learn, DTM model, Vowpal Wabbit, wordrank, varembed.
-
Why? Code quality was not up to our standards. Also there was no one to maintain them, answer user questions, support these modules and wrappers.
So rather than let them rot, we took the hard decision of removing these contributed modules from Gensim. If anyone's interested in maintaining them please fork into your own repo, they can live happily outside of Gensim, linked to as "contributed" from Gensim docs.
-
-
Dropped Python 2. Gensim 4.0 is Py3.6+. Read our Python version support policy.
- If you still need Python 2 for some reason, stay at Gensim 3.8.3.
-
A new Gensim website – finally! 🙃
So, a major clean-up release overall. We're happy with this tighter, leaner and faster Gensim.
This is the direction we'll keep going forward: less kitchen-sink of "latest academic fad", more focus on robust engineering, targetting common NLP & document similarity use-cases.
Why a pre-release?
This 4.0.0beta pre-release is for users who want the cutting edge performance and bug fixes. Plus users who want to help out, by testing and providing feedback: code, documentation, workflows… Please let us know on the mailing list!
Install the pre-release with:
pip install --pre --upgrade gensimWhat will change between this pre-release and a "full" 4.0 release?
Check progress here.
👍 Improvements
- #2947: Bump minimum Python version to 3.6, by @gojomo
- #2939 + #2984: Code style & py3 migration clean up, by @piskvorky
- #2300: Use less RAM in LdaMulticore, by @horpto
- #2698: Streamline KeyedVectors & X2Vec API, by @gojomo
- #2864: Speed up random number generation in word2vec, by @zygm0nt
- #2976: Speed up phrase (collocation) detection, by @piskvorky
- #2979: Allow skipping common English words in multi-word phrases, by @piskvorky
- #2867: Expose
max_final_vocabparameter in fastText constructor, by @mpenkov - #2931: Clear up job queue parameters in word2vec, by @lunastera
- #2939: X2Vec SaveLoad improvements, by @piskvorky
📚 Tutorials and docs
- #2954: New theme for the Gensin website, @dvorakvaclav
- #2960: Added Gensim and Compatibility Wiki page, by @piskvorky
- #2960: Reworked & simplified the Developer Wiki page, by @piskvorky
- #2968: Migrate tutorials & how-tos to 4.0.0, by @piskvorky
- #2899: Clean up of language and formatting of docstrings, by @piskvorky
- #2899: Added documentation for NMSLIB indexer, by @piskvorky
- #2832: Clear up LdaModel documentation by @FyzHsn
- #2871: Clarify that license is LGPL-2.1, by @pombredanne
- #2896: Make docs clearer on
alphaparameter in LDA model, by @xh2 - #2897: Update Hoffman paper link for Online LDA, by @xh2
- #2910: Refresh docs for run_annoy tutorial, by @piskvorky
- #2935: Fix "generator" language in word2vec docs, by @polm
🔴 Bug fixes
- #2891: Fix fastText word-vectors with ngrams off, by @gojomo
- #2907: Fix doc2vec crash for large sets of doc-vectors, by @gojomo
- #2899: Fix similarity bug in NMSLIB indexer, by @piskvorky
- #2899: Fix deprecation warnings in Annoy integration, by @piskvorky
- #2901: Fix inheritance of WikiCorpus from TextCorpus, by @jenishah
- #2940; Fix deprecations in SoftCosineSimilarity, by @Witiko
- #2944: Fix
save_facebook_modelfailure after update-vocab & other initialization streamlining, by @gojomo - #2846: Fix for Python 3.9/3.10: remove
xml.etree.cElementTree, by @hugovk - #2973: phrases.export_phrases() doesn't yield all bigrams
- #2942: Segfault when training doc2vec
⚠️ Removed functionality & deprecations
- #6: No more binary wheels for x32 platforms, by menshikh-iv
- #2899: Renamed overly broad
similarities.indexto the more appropriatesimilarities.annoy, by @piskvorky - #2958: Remove gensim.summarization subpackage, docs and test data, by @mpenkov
- #2926: Rename
num_wordstotopnin dtm_coherence, by @MeganStodel - #2937: Remove Keras dependency, by @piskvorky
- Removed all code, methods, attributes and functions marked as deprecated in Gensim 3.8.3.
3.8.3
⚠️ 3.8.x will be the last gensim version to support Py2.7. Starting with 4.0.0, gensim will only support Py3.5 and above
3.8.3, 2020-05-03
This is primarily a bugfix release to bring back Py2.7 compatibility to gensim 3.8.
🔴 Bug fixes
- Bring back Py27 support (PR #2812, @mpenkov)
- Fix wrong version reported by setup.py (Issue #2796)
- Fix missing C extensions (Issues #2794 and #2802)
👍 Improvements
- Wheels for Python 3.8 (@menshikh-iv)
- Prepare for removal of deprecated
lxml.etree.cElementTree(PR #2777, @tirkarthi)
📚 Tutorial and doc improvements
- Update test instructions in README (PR #2814, @piskvorky)
⚠️ Deprecations (will be removed in the next major release)
-
Remove
gensim.models.FastText.load_fasttext_format: use load_facebook_vectors to load embeddings only (faster, less CPU/memory usage, does not support training continuation) and load_facebook_model to load full model (slower, more CPU/memory intensive, supports training continuation)gensim.models.wrappers.fasttext(obsoleted by the new nativegensim.models.fasttextimplementation)gensim.examplesgensim.nosygensim.scripts.word2vec_standalonegensim.scripts.make_wiki_lemmagensim.scripts.make_wiki_onlinegensim.scripts.make_wiki_online_lemmagensim.scripts.make_wiki_online_nodebuggensim.scripts.make_wiki(all of these obsoleted by the new nativegensim.scripts.segment_wikiimplementation)- "deprecated" functions and attributes
-
Move
gensim.scripts.make_wikicorpus➡gensim.scripts.make_wiki.pygensim.summarization➡gensim.models.summarizationgensim.topic_coherence➡gensim.models._coherencegensim.utils➡gensim.utils.utils(old imports will continue to work)gensim.parsing.*➡gensim.utils.text_utils
3.8.2
3.8.2, 2020-04-10
🔴 Bug fixes
- Pin
smart_openversion for compatibility with Py2.7
⚠️ Deprecations (will be removed in the next major release)
-
Remove
gensim.models.FastText.load_fasttext_format: use load_facebook_vectors to load embeddings only (faster, less CPU/memory usage, does not support training continuation) and load_facebook_model to load full model (slower, more CPU/memory intensive, supports training continuation)gensim.models.wrappers.fasttext(obsoleted by the new nativegensim.models.fasttextimplementation)gensim.examplesgensim.nosygensim.scripts.word2vec_standalonegensim.scripts.make_wiki_lemmagensim.scripts.make_wiki_onlinegensim.scripts.make_wiki_online_lemmagensim.scripts.make_wiki_online_nodebuggensim.scripts.make_wiki(all of these obsoleted by the new nativegensim.scripts.segment_wikiimplementation)- "deprecated" functions and attributes
-
Move
gensim.scripts.make_wikicorpus➡gensim.scripts.make_wiki.pygensim.summarization➡gensim.models.summarizationgensim.topic_coherence➡gensim.models._coherencegensim.utils➡gensim.utils.utils(old imports will continue to work)gensim.parsing.*➡gensim.utils.text_utils
3.8.1
3.8.1, 2019-09-23
🔴 Bug fixes
- Fix usage of base_dir instead of BASE_DIR in _load_info in downloader. (movb, #2605)
- Update the version of smart_open in the setup.py file (AMR-KELEG, #2582)
- Properly handle unicode_errors arg parameter when loading a vocab file (wmtzk, #2570)
- Catch loading older TfidfModels without smartirs (bnomis, #2559)
- Fix bug where a module import set up logging, pin doctools for Py2 (piskvorky, #2552)
📚 Tutorial and doc improvements
👍 Improvements
⚠️ Deprecations (will be removed in the next major release)
-
Remove
gensim.models.FastText.load_fasttext_format: use load_facebook_vectors to load embeddings only (faster, less CPU/memory usage, does not support training continuation) and load_facebook_model to load full model (slower, more CPU/memory intensive, supports training continuation)gensim.models.wrappers.fasttext(obsoleted by the new nativegensim.models.fasttextimplementation)gensim.examplesgensim.nosygensim.scripts.word2vec_standalonegensim.scripts.make_wiki_lemmagensim.scripts.make_wiki_onlinegensim.scripts.make_wiki_online_lemmagensim.scripts.make_wiki_online_nodebuggensim.scripts.make_wiki(all of these obsoleted by the new nativegensim.scripts.segment_wikiimplementation)- "deprecated" functions and attributes
-
Move
gensim.scripts.make_wikicorpus➡gensim.scripts.make_wiki.pygensim.summarization➡gensim.models.summarizationgensim.topic_coherence➡gensim.models._coherencegensim.utils➡gensim.utils.utils(old imports will continue to work)gensim.parsing.*➡gensim.utils.text_utils
3.8.0
3.8.0, 2019-07-08
⚠️ 3.8.x will be the last Gensim version to support Py2.7. Starting with 4.0.0, Gensim will only support Py3.5 and above
🌟 New Features
- Enable online training of Poincare models (koiizukag, #2505)
- Make BM25 more scalable by adding support for generator inputs (saraswatmks, #2479)
- Allow the Gensim dataset / pre-trained model downloader
gensim.downloaderto run offline, by introducing a local file cache (mpenkov, #2545) - Make the
gensim.downloadertarget directory configurable (mpenkov, #2456) - Support fast kNN document similarity search using NMSLIB (masa3141, #2417)
🔴 Bug fixes
- Fix
smart_opendeprecation warning globally (itayB, #2530) - Fix AppVeyor issues with Windows and Py2 (mpenkov, #2546)
- Fix
topn=0versustopn=Nonebug inmost_similar, accepttopnof any integer type (Witiko, #2497) - Fix Python version check (charsyam, #2547)
- Fix typo in FastText documentation (Guitaricet, #2518)
- Fix "Market Matrix" to "Matrix Market" typo. (Shooter23, #2513)
- Fix auto-generated hyperlinks in
CHANGELOG.md(mpenkov, #2482)
📚 Tutorial and doc improvements
- Generate documentation for the
gensim.similarities.termsimmodule (Witiko, #2485) - Simplify the
Supportsection in README (piskvorky, #2542)
👍 Improvements
⚠️ Deprecations (will be removed in the next major release)
-
Remove
gensim.models.FastText.load_fasttext_format: use load_facebook_vectors to load embeddings only (faster, less CPU/memory usage, does not support training continuation) and load_facebook_model to load full model (slower, more CPU/memory intensive, supports training continuation)gensim.models.wrappers.fasttext(obsoleted by the new nativegensim.models.fasttextimplementation)gensim.examplesgensim.nosygensim.scripts.word2vec_standalonegensim.scripts.make_wiki_lemmagensim.scripts.make_wiki_onlinegensim.scripts.make_wiki_online_lemmagensim.scripts.make_wiki_online_nodebuggensim.scripts.make_wiki(all of these obsoleted by the new nativegensim.scripts.segment_wikiimplementation)- "deprecated" functions and attributes
-
Move
gensim.scripts.make_wikicorpus➡gensim.scripts.make_wiki.pygensim.summarization➡gensim.models.summarizationgensim.topic_coherence➡gensim.models._coherencegensim.utils➡gensim.utils.utils(old imports will continue to work)gensim.parsing.*➡gensim.utils.text_utils
3.7.3
3.7.3, 2019-05-06
🔴 Bug fixes
- Fix fasttext model loading from gzip files (mpenkov, #2476)
- Clean up FastText Cython code, fix division by zero (mpenkov, #2382)
- Update legacy model loading (mpenkov, #2454, #2457)
- NMF bugfix (mpenkov, #2466)
- Fix
WordEmbeddingsKeyedVectors.most_similar(Witiko, #2461) - Fix LdaSequence model by updating to num_documents (Bharat123rox, #2410)
- Make termsim matrix positive definite even with negative similarities (Witiko, #2397)
- Fix the off-by-one bug in the TFIDF model. (AMR-KELEG, #2392)
- Make
matutils.unitvecalways return float norm when requested (Witiko, #2419) - Fix misleading
Doc2Vec.docvecscomment (gojomo, #2472)
📚 Tutorial and doc improvements
👍 Improvements
- Adding type check for corpus_file argument (saraswatmks, #2469)
⚠️ Deprecations (will be removed in the next major release)
-
Remove
gensim.models.FastText.load_fasttext_format: use load_facebook_vectors to load embeddings only (faster, less CPU/memory usage, does not support training continuation) and load_facebook_model to load full model (slower, more CPU/memory intensive, supports training continuation)gensim.models.wrappers.fasttext(obsoleted by the new nativegensim.models.fasttextimplementation)gensim.examplesgensim.nosygensim.scripts.word2vec_standalonegensim.scripts.make_wiki_lemmagensim.scripts.make_wiki_onlinegensim.scripts.make_wiki_online_lemmagensim.scripts.make_wiki_online_nodebuggensim.scripts.make_wiki(all of these obsoleted by the new nativegensim.scripts.segment_wikiimplementation)- "deprecated" functions and attributes
-
Move
gensim.scripts.make_wikicorpus➡gensim.scripts.make_wiki.pygensim.summarization➡gensim.models.summarizationgensim.topic_coherence➡gensim.models._coherencegensim.utils➡gensim.utils.utils(old imports will continue to work)gensim.parsing.*➡gensim.utils.text_utils
3.7.2
3.7.2, 2019-04-06
🌟 New Features
-
gensim.models.fasttext.load_facebook_modelfunction: load full model (slower, more CPU/memory intensive, supports training continuation)>>> from gensim.test.utils import datapath >>> >>> cap_path = datapath("crime-and-punishment.bin") >>> fb_model = load_facebook_model(cap_path) >>> >>> 'landlord' in fb_model.wv.vocab # Word is out of vocabulary False >>> oov_term = fb_model.wv['landlord'] >>> >>> 'landlady' in fb_model.wv.vocab # Word is in the vocabulary True >>> iv_term = fb_model.wv['landlady'] >>> >>> new_sent = [['lord', 'of', 'the', 'rings'], ['lord', 'of', 'the', 'flies']] >>> fb_model.build_vocab(new_sent, update=True) >>> fb_model.train(sentences=new_sent, total_examples=len(new_sent), epochs=5)
-
gensim.models.fasttext.load_facebook_vectorsfunction: load embeddings only (faster, less CPU/memory usage, does not support training continuation)>>> fbkv = load_facebook_vectors(cap_path) >>> >>> 'landlord' in fbkv.vocab # Word is out of vocabulary False >>> oov_vector = fbkv['landlord'] >>> >>> 'landlady' in fbkv.vocab # Word is in the vocabulary True >>> iv_vector = fbkv['landlady']
🔴 Bug fixes
- Fix unicode error when loading FastText vocabulary (@mpenkov, #2390)
- Avoid division by zero in fasttext_inner.pyx (@mpenkov, #2404)
- Avoid incorrect filename inference when loading model (@mpenkov, #2408)
- Handle invalid unicode when loading native FastText models (@mpenkov, #2411)
- Avoid divide by zero when calculating vectors for terms with no ngrams (@mpenkov, #2411)
📚 Tutorial and doc improvements
- Add link to bindr (rogueleaderr, #2387)
👍 Improvements
⚠️ Changes in FastText behavior
Out-of-vocab word handling
To achieve consistency with the reference implementation from Facebook,
a FastText model will now always report any word, out-of-vocabulary or
not, as being in the model, and always return some vector for any word
looked-up. Specifically:
'any_word' in ft_modelwill always returnTrue. Previously, it
returnedTrueonly if the full word was in the vocabulary. (To test if a
full word is in the known vocabulary, you can consult thewv.vocab
property:'any_word' in ft_model.wv.vocabwill returnFalseif the full
word wasn't learned during model training.)ft_model['any_word']will always return a vector. Previously, it
raisedKeyErrorfor OOV words when the model had no vectors
for any ngrams of the word.- If no ngrams from the term are present in the model,
or when no ngrams could be extracted from the term, a vector pointing
to the origin will be returned. Previously, a vector of NaN (not a number)
was returned as a consequence of a divide-by-zero problem. - Models may use more more memory, or take longer for word-vector
lookup, especially after training on smaller corpuses where the previous
non-compliant behavior discarded some ngrams from consideration.
Loading models in Facebook .bin format
The gensim.models.FastText.load_fasttext_format function (deprecated) now loads the entire model contained in the .bin file, including the shallow neural network that enables training continuation.
Loading this NN requires more CPU and RAM than previously required.
Since this function is deprecated, consider using one of its alternatives (see below).
Furthermore, you must now pass the full path to the file to load, including the file extension.
Previously, if you specified a model path that ends with anything other than .bin, the code automatically appended .bin to the path before loading the model.
This behavior was confusing, so we removed it.
⚠️ Deprecations (will be removed in the next major release)
-
Remove
gensim.models.FastText.load_fasttext_format: use load_facebook_vectors to load embeddings only (faster, less CPU/memory usage, does not support training continuation) and load_facebook_model to load full model (slower, more CPU/memory intensive, supports training continuation)gensim.models.wrappers.fasttext(obsoleted by the new nativegensim.models.fasttextimplementation)gensim.examplesgensim.nosygensim.scripts.word2vec_standalonegensim.scripts.make_wiki_lemmagensim.scripts.make_wiki_onlinegensim.scripts.make_wiki_online_lemmagensim.scripts.make_wiki_online_nodebuggensim.scripts.make_wiki(all of these obsoleted by the new nativegensim.scripts.segment_wikiimplementation)- "deprecated" functions and attributes
-
Move
gensim.scripts.make_wikicorpus➡gensim.scripts.make_wiki.pygensim.summarization➡gensim.models.summarizationgensim.topic_coherence➡gensim.models._coherencegensim.utils➡gensim.utils.utils(old imports will continue to work)gensim.parsing.*➡gensim.utils.text_utils
3.7.1
3.7.1, 2019-01-31
👍 Improvements
- NMF optimization & documentation (@anotherbugmaster, #2361)
- Optimize
FastText.load_fasttext_model(@mpenkov, #2340) - Add warning when string is used as argument to
Doc2Vec.infer_vector(@tobycheese, #2347) - Fix light linting issues in
LdaSeqModel(@horpto, #2360) - Move out
process_result_queuefrom cycle inLdaMulticore(@horpto, #2358)
🔴 Bug fixes
- Fix infinite diff in
LdaModel.do_mstep(@horpto, #2344) - Fix backward compatibility issue: loading
FastTextKeyedVectorsusingKeyedVectors(missing attributecompatible_hash) (@menshikh-iv, #2349) - Fix logging issue (conda-forge related) (@menshikh-iv, #2339)
- Fix
WordEmbeddingsKeyedVectors.most_similar(@Witiko, #2356) - Fix issues of
flake8==3.7.1(@horpto, #2365)
📚 Tutorial and doc improvements
- Improve
FastTextdocumentation (@mpenkov, #2353) - Minor corrections and improvements in
Any*Vecdocstrings (@tobycheese, #2345) - Fix the example code for SparseTermSimilarityMatrix (@Witiko, #2359)
- Update
poincaredocumentation to indicate the relation format (@AMR-KELEG, #2357)
⚠️ Deprecations (will be removed in the next major release)
-
Remove
gensim.models.wrappers.fasttext(obsoleted by the new nativegensim.models.fasttextimplementation)gensim.examplesgensim.nosygensim.scripts.word2vec_standalonegensim.scripts.make_wiki_lemmagensim.scripts.make_wiki_onlinegensim.scripts.make_wiki_online_lemmagensim.scripts.make_wiki_online_nodebuggensim.scripts.make_wiki(all of these obsoleted by the new nativegensim.scripts.segment_wikiimplementation)- "deprecated" functions and attributes
-
Move
gensim.scripts.make_wikicorpus➡gensim.scripts.make_wiki.pygensim.summarization➡gensim.models.summarizationgensim.topic_coherence➡gensim.models._coherencegensim.utils➡gensim.utils.utils(old imports will continue to work)gensim.parsing.*➡gensim.utils.text_utils
3.7.0
3.7.0, 2019-01-18
🌟 New features
-
Fast Online NMF (@anotherbugmaster, #2007)
-
Benchmark
wiki-english-20171001Model Perplexity Coherence L2 norm Train time (minutes) LDA 4727.07 -2.514 7.372 138 NMF 975.74 -2.814 7.265 73 NMF (with regularization) 985.57 -2.436 7.269 441 -
Simple to use (same interface as
LdaModel)from gensim.models.nmf import Nmf from gensim.corpora import Dictionary import gensim.downloader as api text8 = api.load('text8') dictionary = Dictionary(text8) dictionary.filter_extremes() corpus = [ dictionary.doc2bow(doc) for doc in text8 ] nmf = Nmf( corpus=corpus, num_topics=5, id2word=dictionary, chunksize=2000, passes=5, random_state=42, ) nmf.show_topics() """ [(0, '0.007*"km" + 0.006*"est" + 0.006*"islands" + 0.004*"league" + 0.004*"rate" + 0.004*"female" + 0.004*"economy" + 0.003*"male" + 0.003*"team" + 0.003*"elections"'), (1, '0.006*"actor" + 0.006*"player" + 0.004*"bwv" + 0.004*"writer" + 0.004*"actress" + 0.004*"singer" + 0.003*"emperor" + 0.003*"jewish" + 0.003*"italian" + 0.003*"prize"'), (2, '0.036*"college" + 0.007*"institute" + 0.004*"jewish" + 0.004*"universidad" + 0.003*"engineering" + 0.003*"colleges" + 0.003*"connecticut" + 0.003*"technical" + 0.003*"jews" + 0.003*"universities"'), (3, '0.016*"import" + 0.008*"insubstantial" + 0.007*"y" + 0.006*"soviet" + 0.004*"energy" + 0.004*"info" + 0.003*"duplicate" + 0.003*"function" + 0.003*"z" + 0.003*"jargon"'), (4, '0.005*"software" + 0.004*"games" + 0.004*"windows" + 0.003*"microsoft" + 0.003*"films" + 0.003*"apple" + 0.003*"video" + 0.002*"album" + 0.002*"fiction" + 0.002*"characters"')] """
-
See also:
-
-
Massive improvement of
FastTextcompatibilities (@mpenkov, #2313)from gensim.models import FastText # 'cc.ru.300.bin' - Russian Facebook FT model trained on Common Crawl # Can be downloaded from https://s3-us-west-1.amazonaws.com/fasttext-vectors/word-vectors-v2/cc.ru.300.bin.gz model = FastText.load_fasttext_format("cc.ru.300.bin") # Fixed hash-function allow to produce same output as FB FastText & works correctly for non-latin languages (for example, Russian) assert "мяу" in m.wv.vocab # 'мяу' - vocab word model.wv.most_similar("мяу") """ [('Мяу', 0.6820122003555298), ('МЯУ', 0.6373013257980347), ('мяу-мяу', 0.593108594417572), ('кис-кис', 0.5899622440338135), ('гав', 0.5866007804870605), ('Кис-кис', 0.5798211097717285), ('Кис-кис-кис', 0.5742273330688477), ('Мяу-мяу', 0.5699705481529236), ('хрю-хрю', 0.5508339405059814), ('ав-ав', 0.5479759573936462)] """ assert "котогород" not in m.wv.vocab # 'котогород' - out-of-vocab word model.wv.most_similar("котогород", topn=3) """ [('автогород', 0.5463314652442932), ('ТагилНовокузнецкНовомосковскНовороссийскНовосибирскНовотроицкНовочеркасскНовошахтинскНовый', 0.5423436164855957), ('областьНовосибирскБарабинскБердскБолотноеИскитимКарасукКаргатКуйбышевКупиноОбьТатарскТогучинЧерепаново', 0.5377570390701294)] """ # Now we load full model, for this reason, we can continue an training from gensim.test.utils import datapath from smart_open import smart_open with smart_open(datapath("crime-and-punishment.txt"), encoding="utf-8") as infile: # russian text corpus = [line.strip().split() for line in infile] model.train(corpus, total_examples=len(corpus), epochs=5)
-
Similarity search improvements (@Witiko, #2016)
-
Add similarity search using the Levenshtein distance in
gensim.similarities.LevenshteinSimilarityIndex -
Performance optimizations to
gensim.similarities.SoftCosineSimilarity(full benchmark)dictionary size corpus size speed 1000 100 1.0× 1000 1000 53.4× 1000 100000 156784.8× 100000 100 3.8× 100000 1000 405.8× 100000 100000 66262.0× -
See updated soft-cosine tutorial for more information and usage examples
-
-
Add
python3.7support (@menshikh-iv, #2211)- Wheels for Window, OSX and Linux platforms (@menshikh-iv, MacPython/gensim-wheels/#12)
- Faster installation
👍 Improvements
Optimizations
- Reduce
Phrasermemory usage (drop frequencies) (@jenishah, #2208) - Reduce memory consumption of summarizer (@horpto, #2298)
- Replace inline slow equivalent of mean_absolute_difference with fast (@horpto, #2284)
- Reuse precalculated updated prior in
ldamodel.update_dir_prior(@horpto, #2274) - Improve
KeyedVector.wmdistance(@horpto, #2326) - Optimize
remove_unreachable_nodesingensim.summarization(@horpto, #2263) - Optimize
mz_entropyfromgensim.summarization(@horpto, #2267) - Improve
filter_extremesmethods inDictionaryandHashDictionary(@horpto, #2303)
Additions
- Add
KeyedVectors.relative_cosine_similarity(@rsdel2007, #2307) - Add
random_seedtoLdaMallet(@Zohaggie & @menshikh-iv, #2153) - Add
common_termsparameter tosklearn_api.PhrasesTransformer(@pmlk, #2074) - Add method for patch
corpora.Dictionarybased on special tokens (@Froskekongen, #2200)
Cleanup
- Improve
sixusage (xrange,map,zip) (@horpto, #2264) - Refactor
line2docmethods ofLowCorpusandMalletCorpus(@horpto, #2269) - Get rid most of warnings in testing (@menshikh-iv, #2191)
- Fix non-deterministic test failures (pin
PYTHONHASHSEED) (@menshikh-iv, #2196) - Fix "aliasing chunkize to chunkize_serial" warning on Windows (@aquatiko, #2202)
- Remove
__getitem__code duplication ingensim.models.phrases(@jenishah, #2206) - Add
flake8-rstfor docstring code examples (@kataev, #2192) - Get rid
py26stuff (@menshikh-iv, #2214) - Use
itertools.chaininstead ofsumto concatenate lists (@Stigjb, #2212) - Fix flake8 warnings W605, W504 (@horpto, #2256)
- Remove unnecessary creations of lists at all (@horpto, #2261)
- Fix extra list creation in
utils.get_max_id(@horpto, #2254) - Fix deprecation warning
np.sum(generator)(@rsdel2007, [#2296](https://github...
3.6.0
3.6.0, 2018-09-20
🌟 New features
-
File-based training for
*2Vecmodels (@persiyanov, #2127 & #2078 & #2048)New training mode for
*2Vecmodels (word2vec, doc2vec, fasttext) that allows model training to scale linearly with the number of cores (full GIL elimination). The result of our Google Summer of Code 2018 project by Dmitry Persiyanov.Benchmark on the full English Wikipedia, Intel(R) Xeon(R) CPU @ 2.30GHz 32 cores (GCE cloud), MKL BLAS:
Model Queue-based version [sec] File-based version [sec] speed up Accuracy (queue-based) Accuracy (file-based) Word2Vec 9230 2437 3.79x 0.754 (± 0.003) 0.750 (± 0.001) Doc2Vec 18264 2889 6.32x 0.721 (± 0.002) 0.683 (± 0.003) FastText 16361 10625 1.54x 0.642 (± 0.002) 0.660 (± 0.001) Usage:
import gensim.downloader as api from multiprocessing import cpu_count from gensim.utils import save_as_line_sentence from gensim.test.utils import get_tmpfile from gensim.models import Word2Vec, Doc2Vec, FastText # Convert any corpus to the needed format: 1 document per line, words delimited by " " corpus = api.load("text8") corpus_fname = get_tmpfile("text8-file-sentence.txt") save_as_line_sentence(corpus, corpus_fname) # Choose num of cores that you want to use (let's use all, models scale linearly now!) num_cores = cpu_count() # Train models using all cores w2v_model = Word2Vec(corpus_file=corpus_fname, workers=num_cores) d2v_model = Doc2Vec(corpus_file=corpus_fname, workers=num_cores) ft_model = FastText(corpus_file=corpus_fname, workers=num_cores)
👍 Improvements
- Add scikit-learn wrapper for
FastText(@mcemilg, #2178) - Add multiprocessing support for
BM25(@Shiki-H, #2146) - Add
name_onlyoption for downloader api (@aneesh-joshi, #2143) - Make
word2vec2tensorscript compatible withpython3(@vsocrates, #2147) - Add custom filter for
Wikicorpus(@mattilyra, #2089) - Make
similarity_matrixsupport non-contiguous dictionaries (@Witiko, #2047)
🔴 Bug fixes
- Fix memory consumption in
AuthorTopicModel(@philipphager, #2122) - Correctly process empty documents in
AuthorTopicModel(@probinso, #2133) - Fix ZeroDivisionError
keywordsissue with short input (@LShostenko, #2154) - Fix
min_counthandling in phrases detection usingnpmi_scorer(@lopusz, #2072) - Remove duplicate count from
Phraserlog message (@robguinness, #2151) - Replace
np.integer->np.intinAuthorTopicModel(@menshikh-iv, #2145)
📚 Tutorial and doc improvements
- Update docstring with new analogy evaluation method (@akutuzov, #2130)
- Improve
prune_atparameter description forgensim.corpora.Dictionary(@yxonic, #2128) - Fix
default->autoprior parameter in documentation for lda-related models (@Laubeee, #2156) - Use heading instead of bold style in
gensim.models.translation_matrix(@nzw0301, #2164) - Fix quote of vocabulary from
gensim.models.Word2Vec(@nzw0301, #2161) - Replace deprecated parameters with new in docstring of
gensim.models.Doc2Vec(@xuhdev, #2165) - Fix formula in Mallet documentation (@Laubeee, #2186)
- Fix minor semantic issue in docs for
Phrases(@RunHorst, #2148) - Fix typo in documentation (@KenjiOhtsuka, #2157)
- Additional documentation fixes (@piskvorky, #2121)
⚠️ Deprecations (will be removed in the next major release)
-
Remove
gensim.models.wrappers.fasttext(obsoleted by the new nativegensim.models.fasttextimplementation)gensim.examplesgensim.nosygensim.scripts.word2vec_standalonegensim.scripts.make_wiki_lemmagensim.scripts.make_wiki_onlinegensim.scripts.make_wiki_online_lemmagensim.scripts.make_wiki_online_nodebuggensim.scripts.make_wiki(all of these obsoleted by the new nativegensim.scripts.segment_wikiimplementation)- "deprecated" functions and attributes
-
Move
gensim.scripts.make_wikicorpus➡gensim.scripts.make_wiki.pygensim.summarization➡gensim.models.summarizationgensim.topic_coherence➡gensim.models._coherencegensim.utils➡gensim.utils.utils(old imports will continue to work)gensim.parsing.*➡gensim.utils.text_utils