我有一个字符串列表,它们是来自不同电子邮件对话的主题。我想看看是否有经常使用的单词或单词组合。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
刚刚重新打开它。 –