Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.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_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Replace_Full Text Search_Fuzzywuzzy - Fatal编程技术网 elasticsearch,replace,full-text-search,fuzzywuzzy,Python,elasticsearch,Replace,Full Text Search,Fuzzywuzzy" /> elasticsearch,replace,full-text-search,fuzzywuzzy,Python,elasticsearch,Replace,Full Text Search,Fuzzywuzzy" />

如何使用Python在文本中查找公司名称

如何使用Python在文本中查找公司名称,python,elasticsearch,replace,full-text-search,fuzzywuzzy,Python,elasticsearch,Replace,Full Text Search,Fuzzywuzzy,我有一个格式正确的公司名称列表,我正在尝试查找这些公司何时出现在文档中。问题是它们不太可能像在列表中一样出现在文档中。例如,Visa Inc可能显示为Visa,或者American Airlines Group Inc可能显示为American Airlines 我如何迭代文档的全部内容,然后在找到匹配项时返回格式正确的公司名称 我尝试了fuzzyfuzzy和difflib.get\u close\u matches,但问题是它会查看每个单词,而不是一堆单词: from fuzzywuzzy i

我有一个格式正确的公司名称列表,我正在尝试查找这些公司何时出现在文档中。问题是它们不太可能像在列表中一样出现在文档中。例如,
Visa Inc
可能显示为
Visa
,或者
American Airlines Group Inc
可能显示为
American Airlines

我如何迭代文档的全部内容,然后在找到匹配项时返回格式正确的公司名称

我尝试了
fuzzyfuzzy
difflib.get\u close\u matches
,但问题是它会查看每个单词,而不是一堆单词:

from fuzzywuzzy import process
from difflib import get_close_matches

company_name = ['American Tower Inc', 'American Airlines Group Inc', 'Atlantic American Corp', 'American International Group']

text = 'American Tower is one company. American Airlines is another while there is also Atlantic American Corp but we cannot forget about American International Group Inc.'

#using fuzzywuzzy
for word in text.split():
    print('- ' + word+', ', ', '.join(map(str,process.extractOne(word, company_name))))

#using get_close_matches
for word in text.split():
    match = get_close_matches(word, company_name, n=1, cutoff=.4)
    print(match)


我正在研究一个类似的问题
fuzzyfuzzy
在内部使用
difflib
,它们在大型数据集上的执行速度都很慢

Chris van den Berg使用TF-IDF矩阵将公司名称转换为3克向量,然后使用余弦相似性比较向量


管道很快,也能为部分匹配的字符串提供准确的结果。

对于这种类型的任务,我使用记录链接算法,它会在ML的帮助下为您找到这些集群。您必须提供一些实际示例,以便算法能够学习正确标记数据集的其余部分

以下是一些信息:


干杯,

公司名称中的可选部分是什么,如果文本中没有,也会考虑匹配。如果我说
Inc
Group Inc
Corp
是可选的,并且公司名称应该与之匹配还是不匹配,这对吗?那么让我们假设在文本中我们找到了
美国国际
,那么我想你可以匹配它。我不认为仅仅匹配
American
就可以了,因为当时的背景可能比较宽泛。你能澄清一点吗?是的,这是正确的。如果它单独存在的话,公司等可能会被忽略。但是,即使名称中包含
Inc
,仍应与
Incyte Corp
匹配。此外,所有公司名称都将大写,因此我认为解决方案可能需要使用某种形式的regex?谢谢,我几天前在搜索过程中看到了这一页,但无可否认,它在我的头上。这似乎很有希望,但似乎是在比较一个列表与另一个列表。那么,我如何实现在整个文本块/文件中循环,并尝试查找现有列表中存在的所有公司名称呢?您只需了解TF-IDF矩阵是如何计算的。你能从文档中提取所有的名词短语吗?即使你提取像
company
这样的单词,当你与
company\u name
列表进行比较时,管道也会给你一个很低的分数。是的,仅仅提取titlecase单词就让我有点接近了,然后我希望过滤那些与
company\u name
匹配度高于某个匹配阈值的单词。但我仍然遇到同样的问题,一些公司的名字是一个词(例如,Visa),而另一些是多个词(例如,美国航空公司和美国塔台)。在后一种情况下,我一直在思考如何找到与
公司名称
列表最接近的匹配项。