Как использовать fuzzyWuzzy с двумя CSV? - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь сравнить два CSV, которые содержат названия должностей.Один CSV содержит названия должностей из Бюро статистики труда США, а другой содержит сгенерированный вручную список названий должностей.В каждом списке примерно 2000 названий должностей.Я очень новичок, поэтому вполне вероятно, что у меня есть некоторые очевидные фундаментальные проблемы с моим подходом.Заранее извиняюсь.

Я могу получить все значения предсказания, но по какой-то причине они сравниваются только с первым значением bls_job.


from fuzzywuzzy import fuzz

bls_job_list = open("bls_jobs.csv", "r")
predicted_job_list = open("predicted_jobs.csv", "r")

for bls_job in bls_job_list.readlines():
    for predicted_job in predicted_job_list.readlines():
        print(bls_job + "," + predicted_job + "," + str((fuzz.partial_ratio(bls_job, predicted_job))) + "\n")

bls_job_list.close()
predicted_job_list.close()

Я хочу получить значения fuzzyRatioдля всех значений в обоих списках по сравнению друг с другом.

INPUT _bls_sample: _

admiral, ceo, chief executive officer, chief financial officer, chief operating officer, chief sustainability officer, commissioner of internal revenue, coo, county commissioner, government service, executive governor, mayor, school superintendent, university president,

_predicted_sample: _

abstractor, accessioner, account coordinator, account executive, account manager, account representative, account service representative, account specialist, accountant, accounting clerk, accounting manager, accounting supervisor, accounts manager,

Нижеобразец моего текущего результата:

BLS_job_1, аналитик, 25

BLS_job_1, менеджер анализа, 25

BLS_job_1, водитель скорой помощи, 33

BLS_job_1,рабочий, 27

1 Ответ

0 голосов
/ 08 мая 2019

Я полагаю, что вы используете генераторы в цикле for, и это может быть причиной.Я составил список ваших работ и перебрал каждый элемент для fuzzywuzzy сравнения.Вот такая попытка:

from fuzzywuzzy import fuzz

bls_job_list = open("/russellb/data/py_devel/SO_answrs/input.csv", "r")
predicted_job_list = open("/russellb/data/py_devel/SO_answrs/compare.csv", "r")

bls_job_filtered = [line.replace('\r', '') for line in bls_job_list]
predicted_job_filtered = [line.replace('\r','') for line in predicted_job_list]


for idx, bls_job in enumerate(bls_job_filtered):
    for idw, predicted_job in enumerate(predicted_job_filtered):
        print(bls_job + "," + predicted_job + "," + str((fuzz.partial_ratio(bls_job, predicted_job))) + "\n")

И вывод с использованием кода выше:

admiral,
,abstractor,
,44

admiral,
,accessioner,
,50

admiral,
,account coordinator,
,50

admiral,
,account executive,
,35

admiral,
,account manager,
,50

admiral,
,account representative,
,47

admiral,
,account service representative,
,44

admiral,
,account specialist,
,56

admiral,
,accountant,
,33

admiral,
,accounting clerk,
,35

admiral,
,accounting manager,
,50

admiral,
,accounting supervisor,
,44

admiral,
,accounts manager,
,50

ceo,
,abstractor,
,60

ceo,
,accessioner,
,60

ceo,
,account coordinator,
,60

ceo,
,account executive,
,60

ceo,
,account manager,
,60

ceo,
,account representative,
,60

ceo,
,account service representative,
,60

ceo,
,account specialist,
,40

ceo,
,accountant,
,40

ceo,
,accounting clerk,
,60
...
...
...
school superintendent,
,accounting manager,
,41

school superintendent,
,accounting supervisor,
,48

school superintendent,
,accounts manager,
,42

university president,
,abstractor,
,36

university president,
,accessioner,
,48

university president,
,account coordinator,
,43

university president,
,account executive,
,26

university president,
,account manager,
,24

university president,
,account representative,
,57

university president,
,account service representative,
,59

university president,
,account specialist,
,35

university president,
,accountant,
,33

university president,
,accounting clerk,
,28

university president,
,accounting manager,
,25

university president,
,accounting supervisor,
,44

university president,
,accounts manager,
,22
...