我正在从事NLP项目。我已从“简历”中提取了关键字并将其存储在列表中。另一个列表包含我从JSON中提取的所有技术关键字。这两个列表都包含许多关键字,下面仅作参考。
list_of_keys=['azure', 'job', 'matlab', 'javascript', 'http', 'android', 'amazon', 'apache spark']
result=['apache http server', 'angularjs', 'azure bot service', 'amazon s3', 'android sdk', 'android studio', 'amazon cloudfront']
码:
with open('rawtext.json','r', encoding='utf-8') as f:
data = json.load(f)
result = [x["name"].replace("@", " ").lower() for x in data]
print(result)
print ("List of Matched Keywords are:\n")
# Comparing Lists
for item in list_of_keys:
for item1 in result:
if item == item1:
print("Word from Resume: ", item, ", Word from JSON data: ", item1)
print ("****************\n")
电流输出
简历中的单词:框,JSON数据中的单词:框简历中的单词:arduino,JSON数据中的单词:arduino简历中的单词:arduino,JSON数据中的单词:arduino简历中的单词:浏览器,JSON数据中的单词:浏览器Word中的单词简历:黑色,JSON数据中的单词:黑色简历:地址中的单词,JSON数据中的单词:地址简历:地址中的单词,JSON数据中的单词:地址
我通过比较仅匹配精确单词的两个列表并打印它们,尝试了一种非常简单的方法。但是,我想要的是两个列表中是否有匹配项,例如,如果“ apache spark”与结果列表“ apache http server”匹配,则它应作为输出打印:简历中的单词:apache spark,JSON数据中的Word: apache http服务器。同样,如果匹配了亚马逊,则应将其打印为输出:简历中的单词:亚马逊,JSON数据中的单词:亚马逊s3,亚马逊云
要求的输出:
简历中的单词:apache spark,JSON数据中的单词:apache http服务器简历中的单词:amazon,JSON数据中的单词:amazon s3,amazon cloudfront简历中的单词:http,JSON数据中的单词:apache http服务器
有人可以帮我吗。谢谢。
我认为您要实现的目标与简单的相等性检查有所不同,'azure' == 'azure bot service'
即将始终返回False
。
比较检查可能更复杂,但是从您的预期行为来看,我相信您正在寻找以下内容:
from collections import defaultdict
res_dict = defaultdict(list)
for item in list_of_keys:
for item1 in result:
if item in item1:
res_dict[item].append(item1)
for k,v in res_dict.items():
print("Word from Resume: ", k, ", Word from JSON data: ", ",".join(v))
print ("****************\n")
我已经用=
check替换了check in
,这意味着如果azure
在内部进行比较,则比较将返回true,azure bot service
但对于结果数组中的所有其他字符串,则返回false。
我还建议查看Python是否具有字符串“包含”子字符串方法?进行更复杂的子字符串匹配,因为您可能想检查单词list_of_keys
和results
数组之间是否同时出现单词。
另外,您也可以查看模糊搜索,因为它看起来非常接近您的预期行为https://pypi.org/project/fuzzysearch/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句