У меня есть список должным образом отформатированных названий компаний, и я пытаюсь выяснить, когда эти компании появляются в документе.Проблема в том, что они вряд ли появятся в документе точно , как в списке.Например, Visa Inc
может отображаться как Visa
или American Airlines Group Inc
может отображаться как American Airlines
.
Как мне перебрать все содержимое документа, а затем вернуть правильно отформатированное название компании, когда будет найдено близкое совпадение?
Я пробовал и fuzzywuzzy
, и difflib.get_close_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)