我正在尝试从一个文本文件生成unigram。但只显示给定文件第一行的二元语法。我想为文件中的所有句子显示unigram。
import string;
import sys;
import tokenize;
f = open("data.txt", 'r');
line=f.readline();
while line:
line = line.rstrip();
list = line.split();
for word in list:
print word
line = f.readline();为什么它没有显示句子的一元语法,以及我如何将其转换为二元语法?
提前谢谢。
data.txt是包含句子的文本文件。它有两句话-
Hello world this is a test code
today is 29th november 2011我正在获取输出:
Hello
world
this
is
a
test代码
发布于 2011-11-29 23:22:16
这个代码片段有一些明显的问题。
; of requiredtokenize)。这是有效的,但没有意义。您没有显示文本文件的结构,但我假设每个句子都在单独的一行上(即包含两个句子的文本文件将包含两行)。
我不确定在这种情况下二元语法到底是什么,所以您可能需要替换bigram函数。
from itertools import tee, izip
def bigrams(iterable):
a, b = tee(iterable)
next(b, None)
return izip(a, b)
with open("data.txt", 'r') as f:
for line in f:
words = line.strip().split()
uni = words
bi = bigrams(words)
print uni
print list(bi)发布于 2011-11-29 23:10:50
首先,如果您使用的是python的最新版本,您可以简单地这样做:for line in f,它比这个readline内容简单得多。此外,您不必在每一行都使用;。只有当您想要在一行中执行多个语句时,才使用它。
下面这几行代码对我来说很好:
f = open("data.txt", 'r')
for line in f:
for word in line.split():
print word要创建这样的二元组就足够了(未经过测试!)
items = line.split()
bigrams = []
for i in xrange(len(items) - 1):
bigrams.append((items[i], items[i + 1]))https://stackoverflow.com/questions/8312935
复制相似问题