2015-10-18 40 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