我有这个例子,我想知道如何得到这个结果。我有文本,我标记它,然后收集bigram、trigram和fourgram
import nltk
from nltk import word_tokenize
from nltk.util import ngrams
text = "Hi How are you? i am fine and you"
token=nltk.word_tokenize(text)
bigrams=ngrams(token,2)
大图:[('Hi', 'How'), ('How', 'are'), ('are', 'you'), ('you', '?'), ('?', 'i'), ('i', 'am'), ('am', 'fine'), ('fine', 'and'), ('and', 'you')]
trigrams=ngrams(token,3)
三联图:[('Hi', 'How', 'are'), ('How', 'are', 'you'), ('are', 'you', '?'), ('you', '?', 'i'), ('?', 'i', 'am'), ('i', 'am', 'fine'), ('am', 'fine', 'and'), ('fine', 'and', 'you')]
bigram [(a,b) (b,c) (c,d)]
trigram [(a,b,c) (b,c,d) (c,d,f)]
i want the new trigram should be [(c,d,f)]
which mean
newtrigram = [('are', 'you', '?'),('?', 'i','am'),...etc
任何想法都有帮助
我是这样做的:
它接受单词的列表作为输入,并返回一个ngram列表(对于给定的n),由
sep
(在本例中为空格)分隔。如果你应用集合论(如果我正确地解释了你的问题),你会发现你想要的三元图只是
token
列表中的元素[2:5]、[4:7]、[6:8]等。你可以这样生成它们:
尝试
everygrams
:[出局]:
单词标记:
[出局]:
相关问题 更多 >
编程相关推荐