Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何找到写得不同的相同职位名称?_Python_Machine Learning_String Matching - Fatal编程技术网

Python 如何找到写得不同的相同职位名称?

Python 如何找到写得不同的相同职位名称?,python,machine-learning,string-matching,Python,Machine Learning,String Matching,我想找到那些简历上有职位头衔的人(例如)市场研究协调员,但他们可能写得不一样,例如: Marketing Research Coordinator Market Researching Coordinator Markets Research Coordinator Market Researches Coordinator Marketing Research Coordinator Markets Researchers Coordinator Market Researcher Coord

我想找到那些简历上有职位头衔的人(例如)
市场研究协调员
,但他们可能写得不一样,例如:

Marketing Research Coordinator
Market Researching Coordinator
Markets Research Coordinator
Market Researches Coordinator
Marketing Research Coordinator
Markets Researchers Coordinator
Market Researcher Coordinators
Marketing Researcher Coordinators
...
如果我想匹配
==
我不会得到好的结果,词干分析和柠檬化也很难识别这些差异。
另一种选择是在两个字符串之间使用相似性度量,但这将非常耗时,而且可能不是一种好方法。同样在这种方法中,确定阈值也是另一个问题。

聪明人有想法吗?

使用下面的正则表达式模式,检查职务是否匹配

import re
pattern = r'Market(\w*?) Research(\w*?) Coordinator'
print('Enter job title')
job_title = input()
if re.search(pattern, job_title):
    print('Job title matching with Market Research Coordinator')
else:
    print('Job title not matching with Market Research Coordinator')

使用下面的正则表达式模式并检查职务是否匹配

import re
pattern = r'Market(\w*?) Research(\w*?) Coordinator'
print('Enter job title')
job_title = input()
if re.search(pattern, job_title):
    print('Job title matching with Market Research Coordinator')
else:
    print('Job title not matching with Market Research Coordinator')

我不接受词干和柠檬化不起作用!您可以标记您的输入。然后获取词干,在营销的情况下,如果语言选择正确(检查词干分析包中的语言选择正确),您将获得市场。您还应该确保在if语句的两个元素上应用词干

如果存在听写问题或细微差异,您可以使用一个软件包并接受类似于比率T的输入

例如:

import nltk.stem.porter

p_stemmer = PorterStemmer()
print("the stem of marketing:",p_stemmer.stem('Marketing'))        
print("the stem of marketing research:",p_stemmer.stem('Marketing Research'))
结果如下:

营销的源头:“市场”(正确)

营销研究的源头:“营销研究”(我们不想要)

如您所见,如果未应用标记化,则词干分析器将无法按预期工作


我建议将所有这些结合起来(标记化、词干化和levenstein)。

我不接受词干化和柠檬化不起作用!您可以标记您的输入。然后获取词干,在营销的情况下,如果语言选择正确(检查词干分析包中的语言选择正确),您将获得市场。您还应该确保在if语句的两个元素上应用词干

如果存在听写问题或细微差异,您可以使用一个软件包并接受类似于比率T的输入

例如:

import nltk.stem.porter

p_stemmer = PorterStemmer()
print("the stem of marketing:",p_stemmer.stem('Marketing'))        
print("the stem of marketing research:",p_stemmer.stem('Marketing Research'))
结果如下:

营销的源头:“市场”(正确)

营销研究的源头:“营销研究”(我们不想要)

如您所见,如果未应用标记化,则词干分析器将无法按预期工作


我建议将所有这些(标记化、词干和levenstein)结合起来。

您可以使用Python包
textdestance
计算字符串之间的标准化相似性,并且仅当相似性高于某个阈值时才保留它们

import textdistance

main_job = 'Marketing Research Coordinator'

other_jobs = ['Market Researching Coordinator', 'Markets Research Coordinator', 
              'Market Researches Coordinator', 'Marketing Research Coordinator', 
              'Markets Researchers Coordinator', 'Market Researcher Coordinators',
              'Marketing Researcher Coordinators', 'Marketing Researcher Executive',
              'Senior Advertising Analyst']

for job in other_jobs:
    distance = textdistance.jaccard.normalized_similarity(main_job, job)
    print(f'Similarity "{main_job}" & "{job}": {distance:.3f}')

请看最后两个示例。

您可以使用Python包
textdestance
计算字符串之间的标准化相似性,并且仅当相似性高于某个阈值时才保留它们

import textdistance

main_job = 'Marketing Research Coordinator'

other_jobs = ['Market Researching Coordinator', 'Markets Research Coordinator', 
              'Market Researches Coordinator', 'Marketing Research Coordinator', 
              'Markets Researchers Coordinator', 'Market Researcher Coordinators',
              'Marketing Researcher Coordinators', 'Marketing Researcher Executive',
              'Senior Advertising Analyst']

for job in other_jobs:
    distance = textdistance.jaccard.normalized_similarity(main_job, job)
    print(f'Similarity "{main_job}" & "{job}": {distance:.3f}')

请看最后两个示例。

我不使用stemmer,因为它有错误,例如,它将
verify
更改为
verify
。但正如你们所说,若我对这两个问题都使用词干,那个么问题可能会得到解决。谢谢同时,
p_stemmer.stem('Marketing Research')
不起作用,因为stemmer将整个句子视为一个单词,所以它会按原样返回。我们必须对句子中的每个单词进行词干处理,然后返回一个组合句子。是的,我写这个例子是为了说明将字符串作为一个整体来写是行不通的。:)所以你应该逐字应用。是的,两边的申请都会得到验证,然后你可以比较它们。欢迎您。:)如果答案有帮助,请投票表决。谢谢各位,我看不到您文本的这部分:“如果未应用标记化”。我不使用词干分析器,因为它有错误,例如它将
verify
更改为
verify
。但正如你们所说,若我对这两个问题都使用词干,那个么问题可能会得到解决。谢谢同时,
p_stemmer.stem('Marketing Research')
不起作用,因为stemmer将整个句子视为一个单词,所以它会按原样返回。我们必须对句子中的每个单词进行词干处理,然后返回一个组合句子。是的,我写这个例子是为了说明将字符串作为一个整体来写是行不通的。:)所以你应该逐字应用。是的,两边的申请都会得到验证,然后你可以比较它们。欢迎您。:)如果答案有帮助,请投票表决。谢谢,我看不到你文本的这一部分:“如果没有应用标记化”。