我有一個字符串列表,它們是來自不同電子郵件對話的主題。我想看看是否有經常使用的單詞或單詞組合。Python:在字符串列表中查找未知的重複單詞
一個例子清單將是:
subjects = [
'Proposal to cooperate - Company Name',
'Company Name Introduction',
'Into Other Firm/Company Name',
'Request for Proposal'
]
功能必須檢測「公司名稱」的組合被使用超過一次,而「建議」被多次使用。這些單詞雖然不會事先知道,但我想它必須開始嘗試所有可能的組合。
實際列表當然比這個例子長很多,所以手動嘗試所有組合似乎並不是最好的方法。什麼是最好的方式去做這件事?
UPDATE
我用添Pietzcker的回答開始開發這個功能,但我得到停留在正確運用計數器。它不斷返回列表的長度作爲所有短語的計數。
短語功能,包括標點符號過濾器,如果這句話已經查了檢查,並每短語最大長度的3個字:通過科目列表
def phrases(string, phrase_list):
words = string.split()
result = []
punctuation = '\'\"-_,.:;!? '
for number in range(len(words)):
for start in range(len(words)-number):
if number+1 <= 3:
phrase = " ".join(words[start:start+number+1])
if phrase in phrase_list:
pass
else:
phrase_list.append(phrase)
phrase = phrase.strip(punctuation).lower()
if phrase:
result.append(phrase)
return result, phrase_list
然後循環:
phrase_list = []
ranking = {}
for s in subjects:
result, phrase_list = phrases(s, phrase_list)
all_phrases = collections.Counter(phrase.lower() for s in subjects for phrase in result)
「all_phrases」返回一個元組列表,其中每個計數值爲167,這是我使用的主題列表的長度。不知道我在這裏失去了什麼......
這不是重複的。至少不是那個特定的問題。這不是關於列表中的項目,而是關於字符串列表中的常見短語。請在結束前閱讀標題。 –
建議的重複問題絕不會回答我的問題... – Vincent
剛剛重新打開它。 –