我想用python计算文件中所有bigrams(一对相邻单词)的出现次数.在这里,我正在处理非常大的文件,所以我正在寻找一种有效的方法.我尝试在文件内容上使用带有正则表达式"\ w +\s\w +"的count方法,但它没有被证明是有效的.
例如,假设我要计算文件a.txt中的双字母数,其中包含以下内容:
"the quick person did not realize his speed and the quick person bumped "
Run Code Online (Sandbox Code Playgroud)
对于上面的文件,bigram集和它们的计数将是:
(the,quick) = 2
(quick,person) = 2
(person,did) = 1
(did, not) = 1
(not, realize) = 1
(realize,his) = 1
(his,speed) = 1
(speed,and) = 1
(and,the) = 1
(person, bumped) = 1
Run Code Online (Sandbox Code Playgroud)
我在Python中遇到了一个Counter对象的例子,它用于计算unigrams(单个单词).它还使用正则表达式方法.
这个例子是这样的:
>>> # Find the ten most common words in Hamlet
>>> import re
>>> from collections import Counter
>>> words = re.findall('\w+', open('a.txt').read())
>>> print …Run Code Online (Sandbox Code Playgroud) 我需要为包含以下文本的文本文件计算Unigrams,BiGrams和Trigrams:
"囊性纤维化仅影响美国3万名儿童和青少年.吸入盐水雾可减少充满囊性纤维化患者呼吸道的脓液和感染,但副作用包括令人讨厌的咳嗽和严酷的味道.这就是结论在本周出版的"新英格兰医学杂志"上发表的两项研究."
我从Python开始并使用以下代码:
#!/usr/bin/env python
# File: n-gram.py
def N_Gram(N,text):
NList = [] # start with an empty list
if N> 1:
space = " " * (N-1) # add N - 1 spaces
text = space + text + space # add both in front and back
# append the slices [i:i+N] to NList
for i in range( len(text) - (N - 1) ):
NList.append(text[i:i+N])
return NList # return the list
# test code
for i in range(5):
print …Run Code Online (Sandbox Code Playgroud) 当我对分割特定单词、日期和数字的文本进行标记化时,我在文本匹配方面遇到了问题。在 NLTK 中标记单词时,如何防止诸如“在我的家人中跑步”、“步行 30 分钟”或“每天 4 次”之类的短语分裂?
它们不应导致:
['runs','in','my','family','4x','a','day']
Run Code Online (Sandbox Code Playgroud)
例如:
是的,我每天骑自行车 20-30 分钟,效果很好!!
给出:
['yes','20-30','minutes','a','day','on','my','bike',',','it','works','great']
Run Code Online (Sandbox Code Playgroud)
我希望将“20-30 分钟”视为一个词。我怎样才能得到这种行为>?
从 python 中的给定字符串生成英语单词的所有可能组合。
输入:godaddy 输出:go、god、daddy、add、daddy
有什么好的图书馆吗?