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クラスとメソッド
  • 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.similar_by_word(self,word,topn=10,...)一つの語を検索するk-nearest neighbor.は余弦類似度を計算する.
  • 2.2いくつかの例
    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)類、余弦類似度で測る
  • 4.tf_idf model
    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)]
    """