J'utilise NLTK pour faire une analyse d'un certain nombre de documents distincts. Le contenu de ces documents signifie qu'ils ont tous tendance à se terminer et à commencer par les mêmes jetons.Puis-je obtenir BigRamRollocationFinder (nltk) pour respecter les limites des documents?
Je marque les documents dans une liste de listes, puis j'utilise BigRobCollocationFinder.from_documents pour créer le finder. Lorsque je note les ngrammes par fréquence brute, je remarque que l'occurrence la plus courante est le caractère de fin/caractère de départ. Cela suggérerait que tous les documents sont réunis en un et que l'on trouve des ngrammes sur tout le lot dont je ne veux pas.
Un échantillon du code:
line_tokenizer = nltk.RegexpTokenizer('\{|\}|[^,"}]+')
seqs = ["{B,C}", "{B,A}", "{A,B,C}"]
documents = [line_tokenizer.tokenize(s) for s in seqs]
finder = BigramCollocationFinder.from_documents(documents)
bigram_measures = nltk.collocations.BigramAssocMeasures()
print(finder.score_ngrams(bigram_measures.raw_freq))
Il en résulte la sortie suivante:
[(('B', 'C'), 0.15384615384615385),
(('C', '}'), 0.15384615384615385),
(('{', 'B'), 0.15384615384615385),
(('}', '{'), 0.15384615384615385),
(('A', 'B'), 0.07692307692307693),
(('A', '}'), 0.07692307692307693),
(('B', 'A'), 0.07692307692307693),
(('{', 'A'), 0.07692307692307693)]
Le ngram} {apparaît dans la liste qui ne devrait pas} {jamais apparaître à côté de l'autre.
Existe-t-il une autre façon d'aborder ce problème pour éviter} {apparaître dans la liste?
cela semble fou, mais je pense que vous pouvez pirater votre chemin de cela, me donner une minute, alors que je code le hack =) – alvas