问题描述 投票:0回答:1
输出:
Anonymized text: Jan Kowalski mieszka w Warszawie i ma e-mail [email protected]. Deanonymized text: Jan Kowalski mieszka w Warszawie i ma e-mail [email protected]. Map: {} Anonymized text: Jan Kowalski mieszka w Warszawie i ma e-mail [email protected].

i我期待“ Jan Kowalski”这个名字,并且电子邮件地址被匿名化,但输出保持不变。 我已经使用以下方式安装了pl_core_news_lg型号
python -m spacy download pl_core_news_lg

AM我缺少配置中的某些内容,还是Presidio不适当支持波兰实体识别? 关于如何使其在波兰语中检测名称的任何建议?

有趣的是,当我只使用

anonymizer_tool = PresidioReversibleAnonymizer()

输出看起来像这样:

Anonymized text: Elizabeth Tate mieszka w Warszawie i ma e-mail [email protected]. Deanonymized text: Jan Kowalski mieszka w Warszawie i ma e-mail [email protected]. Map: {'PERSON': {'Elizabeth Tate': 'Jan Kowalski'}, 'EMAIL_ADDRESS': {'[email protected]': '[email protected]'}}

您遇到了两个主要问题:

Spacy的波兰模型可能无法将“ Jan Kowalski”视为一个人
python nlp spacy langchain presidio
1个回答
0
投票

    您在调用Anonymize(...)
  1. 时必须明确指定语言=“ PL”

    贝洛是使它起作用的逐步方法:
  2. 1。验证Spacy实际上检测到“ Jan Kowalski” Presidio依靠Spacy(命名实体识别)。如果Spacy没有将“ Jan Kowalski”标记为一个人,那么Presidio就无需匿名。尝试:

  3. import spacy nlp = spacy.load("pl_core_news_lg") doc = nlp("Jan Kowalski mieszka w Warszawie.") for ent in doc.ents: print(ent.text, ent.label_) If spaCy doesn’t return PERSON, then you either need to train or fine-tune spaCy for Polish names, or define a custom recognizer in Presidio.

2。始终通过

language="pl" 即使您设置
anonymize()

,除非您这样做,否则默认为英语:
languages_config

3。如果需要,请使用自定义模式
anonymized_text = anonymizer_tool.anonymize(text, language="pl")
然后将其注册为Presidio的分析仪。这样可以确保诸如“ Jan Kowalski”之类的抛光名称即使Spacy错过了它们也会被捡起。
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.