import pandas as pd
import spacy
file_path = "insurance_data.csv"
original_df = pd.read_csv(file_path)
def extract_job_title(user_input):
user_input = user_input.lower()
job_titles = original_df["job_title"].unique()
for job_title in job_titles:
if job_title.lower() in user_input:
print(job_title)
return job_title
else:
nlp = spacy.load("en_core_web_sm")
doc = nlp(user_input)
job_titles = [ent.text for ent in doc.ents if ent.label_ == "ORG" or ent.label_ == "TITLE"]
if job_titles:
print(job_titles)
return job_titles[-1]
else:
print("Can't understand. Please provide a valid job title.")
user_input = 'i am a Doctor'
a = extract_job_title(user_input)
print(a)
我在使用 Spacy 识别数组中的职位名称时遇到问题。似乎“医生”并未被视为有效的职称。您能否建议一个替代职位以便准确处理?
我想找到职位名称,即使它不在我的数组中
ORG
是“公司、机构、机构等”的标签,因此不是职位名称,并且默认实体标签中没有 TITLE
之类的东西,除非您自己使用自定义数据对其进行训练。
根据这个问题,现有的标签有:
['ORG', 'CARDINAL', 'DATE', 'GPE', 'PERSON', 'MONEY', 'PRODUCT', 'TIME', 'PERCENT', 'WORK_OF_ART', 'QUANTITY', 'NORP', 'LOC', 'EVENT', 'ORDINAL', 'FAC', 'LAW', 'LANGUAGE']
您可以从此处找到每个标签的描述,但其中都不包含职位名称。这意味着您不走运,需要训练自己的
EntityRecognizer
。互联网上有相关教程,但您当然需要训练数据。
即使你的代码可以工作,在 for 循环中运行它也会非常低效。将其移出其中,这样它只会在您检查过您在
job_titles
中的存在后运行一次。