2011-12-06 29 views
-1

比方說,我有三句話:兩字相鄰句子的

  1. hello world

  2. hello python

  3. today is tuesday

如果我生成每個二元語法它會產生的字符串是這樣的:

[('hello', 'world')] 
[('this', 'is'), ('is', 'python')] 
[('today', 'is'), ('is', 'tuesday')] 

是否有連續兩個句子的雙字母組的句子和雙字母組之間的差異?例如,hello world. hello python是兩個連續的句子。對於這兩個連續的句子,bigrams看起來像我的輸出嗎?

產生它的代碼:

from itertools import tee, izip 

def bigrams(iterable): 
    a, b = tee(iterable) 
    next(b, None) 
    return izip(a, b) 

with open("hello.txt", 'r') as f: 
    for line in f: 
     words = line.strip().split() 
     bi = bigrams(words) 
     print list(bi) 
+0

請重寫你的問題,使它是一致的。除此之外,如果您提供什麼是文本結構,以及期望的句子分隔符是什麼,那麼您將有更好的機會獲得答案 – jsbueno

+0

您是否擁有生成元組列表的代碼?或者任何代碼? – jedwards

+0

我認爲術語bigrams超載,據我所知這意味着任何兩個相鄰字符的組合? 與字符串「你好」,作爲「他」,「el」,「ll」和「lo」的bigrams。請在您的上下文中說明雙精度的定義。 – kraenhansen

回答

1

,但如果我想以產生用於所述相鄰的句子雙字母組將它給出相同的結果與上述的輸出。如果不是,輸出會是什麼樣子?

這取決於你想要的。如果你定義的雙字母組的項目是一個完整的句子,它應該是這樣的:

[('hello world', 'this is python'),('this is python', 'today is tuesday')] 

如果你想在雙字母組,其中一個項目的類型,就是一個字,所有的句子,這將是這樣的:

[('hello', 'world'), ('world', 'this'), ('this', 'is'),...] 
+0

謝謝。這是我需要的。只是一個例子。 – user9797