2015-10-18 96 views
-1

我对条款的格式如下:循环的项目中两个文件

good, bad > man, woman 

我需要的是在piars左右条款之间重复这样的:

[('good', 'man'), ('good', 'woman'), ('bad', 'man'), ('bad', 'woman')] 

而且对于每一对新对象,我都必须通过按行分割的文本文件计算其统计数据。

统计:

1)当在文本文件中的独特线走到一起的第一和第二项('good','man')的频率;

2)第一项或第二项('good' or 'man')的频率,当一个人在文本文件中没有另一行时单独出现。

我在这里的问题是创建虚假统计信息的循环。

有人可以帮助良好的循环?由于

+0

这是你[问]第四次(http://stackoverflow.com/questions/33199241/calculating-occurrence并行语料库)这同样的[问题](http://stackoverflow.com/questions/33200775/calculating-the-joint-and-individual-occurrence-of-pairs-of-names - 在一个文本文件),在两个[帐户](http://stackoverflow.com/questions/33201552/error-in-loop-in-one-code)。 – TigerhawkT3

回答

2

你的循环计数不正确,因为你初始化abc变量,它外面,然后重复使用它们。刚刚重新初始化每个i, j对开始,你不应该有麻烦:

for i in left: 
     for j in right: 
       a = b = c = 0        # reinitialize! 

       for line in text_file.splitlines(): 
         if i in line and j in line: 
           a += 1 
         elif i in line and j not in line: 
           b+= 1 
         elif j in line and i not in line: 
           c+= 1 

       bigram.append((i,j,a, b, c)) 
+0

和bigram = []必须在每个i,j的开始时重新初始化? – fff

+0

也许,我不知道你想如何汇总数据。如果你想要整个数据集的统计数据列表,那么在顶部循环之外留下的数据应该没问题。如果你想为'pairs_file'的每一行分开统计,那么你想把它移动到'i'循环的上方。如果你想为'text_file'中的每一行分别计算两个bigram的数量,那么你可以通过我添加的'a = b = c = 0'这一行来设置'bigram'初始化,尽管这种情况没有什么意义, 'bigram'只会获得一个价值。 – Blckknght