NLTK - Fréquence de comptage de Bigram
C'est un Python et NLTK newbie question.
Je veux trouver la fréquence de bigrams qui se produisent de plus de 10 fois ensemble et ont la plus haute de la PMI.
Pour cela, je travaille avec ce code
def get_list_phrases(text):
tweet_phrases = []
for tweet in text:
tweet_words = tweet.split()
tweet_phrases.extend(tweet_words)
bigram_measures = nltk.collocations.BigramAssocMeasures()
finder = BigramCollocationFinder.from_words(tweet_phrases,window_size = 13)
finder.apply_freq_filter(10)
finder.nbest(bigram_measures.pmi,20)
for k,v in finder.ngram_fd.items():
print(k,v)
Toutefois, cela ne limite les résultats à top 20. - Je voir des résultats qui ont de fréquence < 10. Je suis nouveau dans le monde de Python.
Quelqu'un peut s'il vous plaît signaler la façon de modifier ce pour obtenir uniquement le top 20.
Merci
source d'informationauteur jainp
Vous devez vous connecter pour publier un commentaire.
Faire passer par le tutoriel à http://nltk.googlecode.com/svn/trunk/doc/howto/collocations.html pour plus d'utilisation de
collocation
fonctions dansNLTK
et aussi les mathématiques dans https://en.wikipedia.org/wiki/Pointwise_mutual_information. Espérons que le script suivant permet de vous depuis votre code en question n'a pas de spécifier ce qui est de l'entrée.PMI mesures de l'association de deux mots par le calcul de la
log ( p(x|y) /p(x) )
donc ce n'est pas seulement à propos de la fréquence d'un mot événement ou un ensemble de mots concordante ensemble. Pour atteindre un haut PMI, vous avez besoin de:Voici quelques extrême PMI exemples.
disons que vous disposez de 100 mots dans le corpus, et si la fréquence est d'un certain mot
X
est 1 et il se produit uniquement avec un mot deY
qu'une seule foispuis:disons que vous disposez de 100 mots dans le corpus, et si la fréquence d'un mot est de 90, mais il ne se produit jamais avec un autre mot
Y
puis la PMI estdans ce sens, le premier scénario est >>> PMI entre X,Y que le deuxième scénario, même si la fréquence de la deuxième mot est très élevé.