我有一个包含很多句子的文本。我如何使用nltk.ngrams它来处理它?
这是我的代码:
sequence = nltk.tokenize.word_tokenize(raw)
bigram = ngrams(sequence,2)
freq_dist = nltk.FreqDist(bigram)
prob_dist = nltk.MLEProbDist(freq_dist)
number_of_bigrams = freq_dist.N()
Run Code Online (Sandbox Code Playgroud)
但是,上面的代码假设所有句子都是一个序列。但是,句子是分开的,我猜一个句子的最后一个词与另一个句子的起始词无关。如何bigram为这样的文本创建一个?我还需要prob_dist并且number_of_bigrams基于`freq_dist。
有类似这样的问题什么是 ngram 计数以及如何使用 nltk 实现?但它们主要是关于一个单词序列。
如果单词的成对映射得分超过 0.5,则将它们分组在一起。如果组中任何其他得分超过 0.5 的关键字,则将该关键字添加到该组中。
例子:
输入:
word1 word2 score
hello hello world 0.75
hello world hi world 0.555
hello hi world 0
good morning hello 0
good morning morning 0.75
morning hello 0
morning hello world 0
morning hi world 0
good morning hello world 0
good morning hi world 0
Run Code Online (Sandbox Code Playgroud)
输出:
word group
hello 1
hello world 1
hi world 1
good morning 2
morning 2
Run Code Online (Sandbox Code Playgroud) 我正在尝试对“出生”列进行迭代以找到特定的年龄组,以对这些组的类别项目进行计数。
我的数据集如下所示。
data = pd.DataFrame({'birth': ['1/12/1980', '2/6/1992', '6/6/1975',
'6/3/2000'], 'problem':['cat3', 'cat2', 'cat1' , 'cat1']})
birth problem
0 1/12/1980 cat3
1 2/6/1992 cat2
2 6/6/1975 cat1
3 6/3/2000 cat1
.. ...... ....
15488 9/9/2010 cat55
Run Code Online (Sandbox Code Playgroud)
正确的输出可能是这样的:
年轻(1990-2019):Cat1:55,cat2:154,cat3:84,cat6:5554
成人:(1990-1975):Cat1:99,cat2:5121,cat3:5445
MiddleAged:(1975年及之前):cat1:99,cat2:545,cat82:644
删除标点符号,将类型转换为字符串并尝试如下操作:
for i in range(len(yas2)):
yas3.append(int(yas2[i][-4:]))
Run Code Online (Sandbox Code Playgroud)
然后迭代条件,但我无法整合和计算问题列。