使用同义词进行单词相关/匹配

时间:2017-05-04 10:31:25

标签: python csv text-processing synonym python-textprocessing

我正在尝试匹配两个不同csv文件的列。我设法匹配单词和#34; house"和"住所"或"笔记"和#34;评论"。我的问题是我无法成功地将更复杂的单词关联起来。

示例:(这些是来自不同文件的列名)

"电子邮件"和"电子邮件地址"我的程序可以检测到" Email"和"电子邮件"是相同但无法连接"电子邮件"到"地址"。

其他例子:

"名称/称呼"和"标题"。我发现它们与#34; Title"然后我扔掉了#34; Salutation" 。这不能应用于前面的例子,因为我不想丢弃"地址"。

我如何决定是否保留其他词语或将其丢弃?

编辑: 我在尝试的内容中添加了一些代码。对不起,如果它令人困惑。

elif len(list_of_tokens_1[i]) == 1 and len(list_of_tokens_2[j]) == 2:
    score1, list1_1,list1_2, syns_dict = common_words_advanced(copy_tokens_1[i][0], copy_tokens_2[j][0], syns_dict)
    score2, list2_1,list2_2, syns_dict = common_words_advanced(copy_tokens_1[i][0], copy_tokens_2[j][1], syns_dict)

list_of_tokens_1包含第一个文件的列名和第二个文件的list_of_tokens_2,两者都是标记化的(例如E-mail_Address - > ['电子邮件','地址'] .copy_tokens_1和copy_tokens_2是以前列表的副本,因此我可以进行更改。

syns_dict包含单词的所有同义词,单词为键。

common_words_advanced是一个函数,它返回这些单词将其同义词字符串与字符串进行比较的接近程度。如果得分为1,则意味着它们至少有一个共同的同义词,因此它们匹配。如果它更少意味着它们接近但它们不匹配。

list2_1,list1_2等包含为每个单词返回的最匹配的同义词。

在此代码中,我尝试将[Email] len == 1与[电子邮件,地址] len == 2匹配。第一行有输入'电子邮件'和电子邮件'分数为1.第二行比较电子邮件和地址,得分为~0.5(非常糟糕)。

0 个答案:

没有答案