2017-09-13 88 views
2

我想計算文本樣本的簡單移動窗口平均類型/令牌比率(TTR)。我知道如何計算整個文本的TTR,或者選擇前50個單詞並計算TTR。我認爲我需要做的是創建一個循環,每次迭代超過50個單詞,每次開始移動+1,以便窗口在文本中移動,將每個窗口的結果TTR附加到可以列表的列表中然後平均。這是我堅持的循環/分塊/ +1部分。如何應用「移動窗口」在Python中順序分析文本塊?

這是我想(我想)在循環中做什麼。文本已經被降低等:

window = text[0:50] 
wordCount = collections.Counter(window) 
uniqueWords = list(wordCount.keys()) 
TTR = (len(uniqueWords))/(len(window)) 
windowsTTR.append(TTR) 

我已經讀到這裏其他的答案,以及爲枚舉和itertools.islice文檔,但似乎仍不能解決我的問題。感激地接受任何幫助,我對Python相當陌生。

+0

當你得到你需要在這裏的答案,所以你要請,標誌着它接納」。當你有足夠的聲望時,你可以對它投票。 –

回答

0

根據起始位置參數化您的循環體。然後遍歷所有可能的開始位置。

window_width = 50 
last_index = len(text) - window_width 
for start in range (last_index): 
    window = text[start:start+window_width] 
    wordCount = collections.Counter(window) 
    uniqueWords = list(wordCount.keys()) 
    TTR = (len(uniqueWords))/(len(window)) 
    windowsTTR.append(TTR) 

如果您需要通過文本,以更大的步驟,然後參數化的是,還有:

window_width = 50 
last_index = len(text) - window_width 
step = 4 # shift 4 positions at a time 
for start in range (0, last_index, step): 
相關問題