如果已经回答了这个问题我很抱歉,但我似乎无法找到描述此过程的页面。我要做的是采取一个大文件(纽约时代语料库),使用拆分功能将其更改为单词列表,然后在该长列表中搜索某些单词。我已经能够让python用这段代码打印文件
words=open('nyt.txt')
for line in words:
print (line)
但我希望以后可以在这个函数上使用words.split()。
到目前为止,我一直在使用我刚刚输入的小型语料库来开发程序
words= ('A B. C D E F G A. B C D E F G A B C D E F G A B C D E F G')
但是,而不是将nyt复制并粘贴到括号中(这不起作用,文件太大)。我宁愿让它将文件源化为变量名。
如果有可能,我很抱歉,如果之前有人问过并回答过这个问题。
答案 0 :(得分:1)
您可能想要的是一个生成器。在您的情况下,它可能如下所示:
def words(lines):
for line in lines:
for word in line.split():
yield word
这会逐行处理文件,因此不必一次将整个文件读入内存。 yield
关键字将函数结果转换为生成器。用法:
import sys
for word in words(sys.stdin):
print word
编辑:如果我这次正确理解你,你只想把所有单词都读成一个列表?很容易:
lines = open('nyt.txt')
words = []
for line in lines:
words.extend(line.split())
print words
答案 1 :(得分:0)
看看nltk
。这是一个庞大的项目,它有工具与语料库一起工作。该项目是用Python编写的,可在http://www.nltk.org/获得。
答案 2 :(得分:0)
我不确定你想要什么,但是你在找这样的东西吗?
words = open('README')
word_list = []
for l in words:
word_list.append(l)
如果你要用语言做更复杂的事情,你应该看一下NLTK包。
答案 3 :(得分:0)
计算目标词在语料库中出现的次数
corpus = ('A B C A B C', 'A D')
target = {'A':0, 'D':0}
# also works for a file
# for line in open('file.txt'):
for line in corpus:
for word in line.split():
if word in target:
target[word] += 1
for (word, count) in target.iteritems():
print 'word "' + word + '" occurs ' + str(count) + ' times'
引来了
word "A" occurs 3 times
word "D" occurs 1 times