我想计算一些关键字(单字或多字)在文档中出现的频率.为此,我使用正则表达式.下面是我的实现:
def calculate_keyword_frequency(keyword_list, text):
frequency = {}
for keyword in keyword_list:
frequency[keyword] = len(re.findall(keyword, text))
return frequency
keyword_list = ["your work", "bodily injury"]
text = "your work needs to be finished. before you leave, your work should be done!"
result = calculate_keyword_frequency(keyword_list, text)
# Print the frequency for each keyword
for keyword, frequency in result.items():
print(f"{keyword} = {frequency}")
这将使用re.findall()函数来查找文本中出现的所有关键字及其频率.
我对上述方法有两个问题:
1.)该逻辑将返回列表中出现的所有关键字的频率.但是,如果关键字存在于文本中,但以不同的方式,即your work
或your, work
而不是your work
(额外字符),或者存在关键字但不是以列表中存在的匹配关键字的形式存在的任何其他情况,则逻辑将不检测该关键字.Basically the above logic is not robust enough.
2.)有没有其他方法或库可以用来计算关键字在列表中的频率?解决方法应该比上面的逻辑更可靠.
谢谢!
EDIT1::我知道我可以编写一个正则表达式模式来解决第一个问题.但这带来了另一个问题,keyword_list
个关键词可以有数百个.为所有这些对象编写正则表达式模式是不可行的!