NLP Spacy 添加特殊情况以识别 USD 以外的货币(即 CAD)
NLP Spacy add special case to recognize currency other than USD (ie. CAD)
我正在做一个非常简单的任务,我需要在字符串中提取美元金额。
我试过 Spacy,但它只识别 1000 美元而不是 1000 加元。
我尝试添加一个特例
special_case = [{
'ORTH': 'CAD',
'TAG': '$',
'IS_CURRENCY': True}]
nlp.tokenizer.add_special_case('CAD', special_case)
运气不好。
示例:
doc = nlp('I will pay you 1000 CAD tomorrow')
extracted_money = [ent.text for ent in doc.ents if ent.label_ == 'MONEY']
正在寻找 return 我 extracted_money =['1000 CAD']
的解决方案
感谢任何帮助。
您可以使用 spacy.matcher.Matcher
:
import spacy
from spacy.matcher import Matcher
nlp = spacy.load("en_core_web_sm")
doc = nlp('I will pay you 1000 CAD tomorrow')
matcher = Matcher(nlp.vocab)
pattern = [{'IS_DIGIT': True}, {'TEXT':'CAD'}] # NUMBER + CAD
matcher.add('CAD', [pattern])
matches = matcher(doc)
for match_id, start, end in matches:
string_id = nlp.vocab.strings[match_id] # Get string representation
span = doc[start:end] # The matched span
print( match_id, string_id, start, end, '->', span.text, '<-')
输出:
5189151114763691552 CAD 4 6 -> 1000 CAD <-
此处的模式是 [{'IS_DIGIT': True}, {'TEXT':'CAD'}]
:一个数字标记后跟一个 CAD
标记。
我正在做一个非常简单的任务,我需要在字符串中提取美元金额。 我试过 Spacy,但它只识别 1000 美元而不是 1000 加元。 我尝试添加一个特例
special_case = [{
'ORTH': 'CAD',
'TAG': '$',
'IS_CURRENCY': True}]
nlp.tokenizer.add_special_case('CAD', special_case)
运气不好。
示例:
doc = nlp('I will pay you 1000 CAD tomorrow')
extracted_money = [ent.text for ent in doc.ents if ent.label_ == 'MONEY']
正在寻找 return 我 extracted_money =['1000 CAD']
感谢任何帮助。
您可以使用 spacy.matcher.Matcher
:
import spacy
from spacy.matcher import Matcher
nlp = spacy.load("en_core_web_sm")
doc = nlp('I will pay you 1000 CAD tomorrow')
matcher = Matcher(nlp.vocab)
pattern = [{'IS_DIGIT': True}, {'TEXT':'CAD'}] # NUMBER + CAD
matcher.add('CAD', [pattern])
matches = matcher(doc)
for match_id, start, end in matches:
string_id = nlp.vocab.strings[match_id] # Get string representation
span = doc[start:end] # The matched span
print( match_id, string_id, start, end, '->', span.text, '<-')
输出:
5189151114763691552 CAD 4 6 -> 1000 CAD <-
此处的模式是 [{'IS_DIGIT': True}, {'TEXT':'CAD'}]
:一个数字标记后跟一个 CAD
标记。