我想查找和计算特定的二元词,例如" red apple"在文本文件中。 我已经将文本文件写入了单词列表,因此我无法使用正则表达式计算整个短语。 (即双子座)(或者我可以吗?)
如何计算文本文件中的特定二元组?不使用nltk或其他模块...正则表达式可以解决?
答案 0 :(得分:0)
为什么要将文本文件放入列表中。它也没有内存效率。 您可以直接使用file.read()方法而不是文本。
import re
text = 'I like red apples and green apples but I like red apples more.'
bigram = ['red apples', 'green apples']
for i in bigram:
print 'Found', i, len(re.findall(i, text))
出:
Found red apples 2
Found green apples 1
答案 1 :(得分:0)
您是否只查找特定的双字母组合,或者您可能需要扩展搜索以检测文本中常见的任何双字母组件?在后一种情况下,请查看NLTK collocations module。你说你想在不使用NLTK或其他模块的情况下这样做,但在实践中这是一个非常糟糕的主意。由于存在例如'红苹果',而不是'红苹果',你会错过你想要的东西。另一方面,NLTK为lemmatizaton提供了有用的工具,计算了大量的统计数据等。
想一想:为什么以及如何将这些行转为单词列表?这不仅效率低下,而且取决于你究竟是怎么做的,你可能丢失了关于单词顺序,不正确处理的标点符号,搞砸了大写/小写或者犯了一百万个其他错误的信息。这也是为什么NLTK就是你需要的原因。