gensimの概要
5998 ワード
1.概要
python NLPライブラリ.tf-idfモデル、word 2 vecとdoc 2 vecなどを含む.公式サイトアドレス
2.word2vec
公式チュートリアル:models.word 2 vec–Deep learning with word 2 vec
2.1クラスとメソッド model.wv.similar_by_word(self,word,topn=10,...)一つの語を検索するk-nearest neighbor.は余弦類似度を計算する. 2.2いくつかの例
3.doc2vec
公式チュートリアル:models.doc 2 vec–Deep learning with paragraph 2 vec
word 2 vecでは、コーパスの辞書が十数万級なので、新しい文が来て、中のwordも登録されていないことはめったにありません.doc 2 vecでは、登録されていない新しい文章が来ました.gensimは
共通クラスとメソッド 4.tf_idf model
python NLPライブラリ.tf-idfモデル、word 2 vecとdoc 2 vecなどを含む.公式サイトアドレス
2.word2vec
公式チュートリアル:models.word 2 vec–Deep learning with word 2 vec
2.1クラスとメソッド
gensim.models.word2vec.Word2Vec(utils.SaveLoad)
クラス.トレーニング、使用、word 2 vecモデルの評価に使用する.__init__(self, sentences=None, size=100, alpha=0.025, window=5, min_count=5, ...)
sentences
:1つのリスト、要素はsentence.sentenceも1つのリスト、フォーマットは[word 1,word 2,...,word_n]. size
: the dimensionality of the feature vectors. window
: the maximum distance between the current and predicted word within a sentence. alpha
: the initial learning rate. seed
: for the random number generator min_count
: ignore all words with total frequency lower than this. save(self, *args, **kwargs)
永続化モデル、例えばmodel.save('/tmp/mymodel')
・@classmethod load(cls, *args, **kwargs)
永続化したモデルを逆シーケンス化する.例えばnew_model = gensim.models.Word2Vec.load('/tmp/mymodel')
model[word]
例えば、model[‘computer’]は、その単語のベクトルを返し、NumPyのvectorである.model.wv.most_similar_cosmul(positive=['woman', 'king'], negative=['man'])
# ('queen', 0.71382287), ...]
model.wv.doesnt_match("breakfast cereal dinner lunch".split())
# 'cereal'
model.wv.similarity('woman', 'man')
# 0.73723527
3.doc2vec
公式チュートリアル:models.doc 2 vec–Deep learning with paragraph 2 vec
word 2 vecでは、コーパスの辞書が十数万級なので、新しい文が来て、中のwordも登録されていないことはめったにありません.doc 2 vecでは、登録されていない新しい文章が来ました.gensimは
gensim.models.doc2vec.Doc2Vec#infer_vector(self, doc_words, alpha=0.1, min_alpha=0.0001, steps=5)
関数を提供し、モデルを生成した後、新しいドキュメントを予測するためのvector representationを提供しました.共通クラスとメソッド
gensim.similarities.docsim.SparseMatrixSimilarity(interfaces.SimilarityABC)
類、余弦類似度で測るimport logging
#logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
from gensim import corpora, models, similarities
# First, create a small corpus of 9 documents and 12 features
# a list of list of tuples
# see: https://radimrehurek.com/gensim/tut1.html
corpus = [[(0, 1.0), (1, 1.0), (2, 1.0)],
[(2, 1.0), (3, 1.0), (4, 1.0), (5, 1.0), (6, 1.0), (8, 1.0)],
[(1, 1.0), (3, 1.0), (4, 1.0), (7, 1.0)],
[(0, 1.0), (4, 2.0), (7, 1.0)],
[(3, 1.0), (5, 1.0), (6, 1.0)],
[(9, 1.0)],
[(9, 1.0), (10, 1.0)],
[(9, 1.0), (10, 1.0), (11, 1.0)],
[(8, 1.0), (10, 1.0), (11, 1.0)]]
tfidf = models.TfidfModel(corpus)
vec = [(0, 1), (4, 1)]
print(tfidf[vec])
# shape=9*12
index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_features=12)
sims = index[tfidf[vec]]
print(list(enumerate(sims)))
"""
[(0, 0.8075244024440723), (4, 0.5898341626740045)]
# Document number zero (the first document) has a similarity score of 0.466=46.6%, the second document has a similarity score of 19.1% etc.
[(0, 0.4662244), (1, 0.19139354), (2, 0.24600551), (3, 0.82094586), (4, 0.0), (5, 0.0), (6, 0.0), (7, 0.0), (8, 0.0)]
"""