gpt4 book ai didi

Python NLTK : Bigrams trigrams fourgrams

转载 作者:太空狗 更新时间:2023-10-29 16:56:47 27 4
gpt4 key购买 nike

我有这个例子,我想知道如何得到这个结果。我有文本并将其标记化,然后像这样收集二元组、三元组和四元组

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)

二元组:[('嗨', '怎么样'), ('怎么样', '是'), ('是', '你'), ('你', '?'), ( '?', 'i'), ('i', 'am'), ('am', 'fine'), ('fine', 'and'), ('and', 'you')]

trigrams=ngrams(token,3)

三元组:[('嗨', '怎么样', '是'), ('怎么样', '是', '你'), ('是', '你', '?') , ('你', '?', '我'), ('?', '我', '我'), ('我', '我', '很好'), ('我', '很好', '和'), ('很好', '和', '你')]

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

任何想法都会有帮助

最佳答案

如果你应用了一些集合论(如果我正确地解释了你的问题),你会发现你想要的三字母组只是元素 [2:5]、[4:7]、[6:8]、 token 列表等。

你可以像这样生成它们:

>>> new_trigrams = []
>>> c = 2
>>> while c < len(token) - 2:
... new_trigrams.append((token[c], token[c+1], token[c+2]))
... c += 2
>>> print new_trigrams
[('are', 'you', '?'), ('?', 'i', 'am'), ('am', 'fine', 'and')]

关于Python NLTK : Bigrams trigrams fourgrams,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24347029/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com