Python >> Tutoriel Python >  >> Python Tag >> Gensim

Obtenir des bigrammes et des trigrammes dans word2vec Gensim

Tout d'abord, vous devez utiliser la classe Phrases de gensim afin d'obtenir des bigrammes, ce qui fonctionne comme indiqué dans la doc

>>> bigram = Phraser(phrases)
>>> sent = [u'the', u'mayor', u'of', u'new', u'york', u'was', u'there']
>>> print(bigram[sent])
[u'the', u'mayor', u'of', u'new_york', u'was', u'there']

Pour obtenir des trigrammes, etc., vous devez utiliser le modèle bigramme que vous avez déjà et lui appliquer à nouveau Phrases, etc.Exemple :

trigram_model = Phrases(bigram_sentences)

Il y a aussi un bon cahier et une vidéo qui explique comment l'utiliser .... le cahier, la vidéo

La partie la plus importante est de savoir comment l'utiliser dans des phrases de la vie réelle, comme suit :

// to create the bigrams
bigram_model = Phrases(unigram_sentences)

// apply the trained model to a sentence
 for unigram_sentence in unigram_sentences:                
            bigram_sentence = u' '.join(bigram_model[unigram_sentence])

// get a trigram model out of the bigram
trigram_model = Phrases(bigram_sentences)

J'espère que cela vous aidera, mais la prochaine fois, donnez-nous plus d'informations sur ce que vous utilisez, etc.

P.S :Maintenant que vous l'avez modifié, vous ne faites rien pour obtenir des bigrammes, vous devez simplement le diviser, vous devez utiliser des expressions afin d'obtenir des mots comme New York en tant que bigrammes.


from gensim.models import Phrases

from gensim.models.phrases import Phraser

documents = 
["the mayor of new york was there", "machine learning can be useful sometimes","new york mayor was present"]

sentence_stream = [doc.split(" ") for doc in documents]
print(sentence_stream)

bigram = Phrases(sentence_stream, min_count=1, threshold=2, delimiter=b' ')

bigram_phraser = Phraser(bigram)


print(bigram_phraser)

for sent in sentence_stream:
    tokens_ = bigram_phraser[sent]

    print(tokens_)

Phrases et Phraser sont ceux que vous devriez rechercher

bigram = gensim.models.Phrases(data_words, min_count=1, threshold=10) # higher threshold fewer phrases.
trigram = gensim.models.Phrases(bigram[data_words], threshold=100) 

Une fois que vous avez suffisamment ajouté de vocabulaires, utilisez Phraser pour un accès plus rapide et une utilisation efficace de la mémoire. Pas obligatoire mais utile.

bigram_mod = gensim.models.phrases.Phraser(bigram)
trigram_mod = gensim.models.phrases.Phraser(trigram)

Merci,