从文本字符串返回职位名称

问题描述 投票:0回答:1
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 识别数组中的职位名称时遇到问题。似乎“医生”并未被视为有效的职称。您能否建议一个替代职位以便准确处理?

我想找到职位名称,即使它不在我的数组中

python spacy
1个回答
0
投票

说明

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
中的存在后运行一次。

© www.soinside.com 2019 - 2024. All rights reserved.