我有一个关于将类似单词及其缩写分组为一组的问题,例如,我有下面的单词列表:
人工智能我想把这些单词分成[人工智能、机器学习、数据分析]
我使用了difflib.get_close_matches((,但这并没有给我想要的结果。例如,difflib组是这样的:信息技术:[信息技术,移动技术,新技术]
我还使用了fuzz.token_set_ratio((,但这也没有为我提供所需的结果。莱文斯坦也没有。
如果有任何机器学习算法或任何python库,请告诉我。
谢谢
您有两种类型的问题:
1( 您有等子字符串的字符串,如Data Analytics和Data&分析。要解决这个问题,你有一个快速的解决方案。
def check_if_substring( str1 = "Data Analytics" , str2 = "Data & Analytics" ):
str1 = str1.lower()
str2 = str2.lower()
split_str_1 = str1.split()
split_str_2 = str2.split()
is_same = True
for s in split_str_1:
if( not s in split_str_2 ):
is_same = False
if is_same: return True
is_same = True
for s in split_str_2:
if( not s in split_str_1 ):
is_same = False
return is_same
2( 你有首字母缩写的问题。将ML与机器学习相匹配。这更棘手。您需要检测某些字符串是缩写(可能是因为它们几乎没有超过4个字符(,并将它们与非缩写字符串的首字母进行匹配。使用动态编程将它们对齐