我想训练一个机器学习模型来学习和提取文本文档中的合法引用模式。我可以使用的最佳算法是什么?我的训练数据样本法律引用集看起来像,
sample set:
Brill v. Guardian Life Ins. Co. of America, 142 N.J. 520, 529 (1995)
Della v. Guard Lifal Ins. Co. of SA, 142 N.J. 420, 549 (2011)
Heljon Mgmt. Corp. v. DiLeo, 55 N.J. Super. 306, 312-13 (No Citations. This was
extracted from NJ Sup..)
Ocean Cape Hotel Corp. v. Masefield Corp., 63 N.J. Super. 369, 383 (App. Div. 1960)使用正则表达式代码从文档中提取引用训练样本,
r'(?:[A-Z]\w*\.? )+v\. .*?\d{4}\)'我尝试过spaCy实体匹配,但这不起作用(我敢打赌我的代码不完美)。我的代码
import re
import en_core_web_sm
nlp = en_core_web_sm.load()
nlp = spacy.load('en_core_web_sm')
from spacy.matcher import Matcher
m_tool = Matcher(nlp.vocab)
doc = open(file='text1.txt', mode='r', encoding='utf-8').read()
#print(text)
doc = nlp(doc)
#print([(ent.text, ent.label_) for ent in doc.ents])
p1 = [{'IS_TITLE': 'NN'}, {'LOWER': 'v'}, {'IS_PUNCT': True}, {'IS_TITLE': 'NN'}]
p2 = [{'IS_TITLE': 'NN'}, {'IS_TITLE': 'NN'}, {'LOWER': 'v'}, {'IS_PUNCT': True},
{'IS_TITLE': 'NN'}]
p3 = [{'IS_TITLE': 'NN'}, {'LOWER': 'v'}, {'IS_PUNCT': True}, {'IS_TITLE': 'NN'},
{'IS_TITLE': 'NN'},]
p4 = [{'IS_TITLE': 'NN'}, {'IS_TITLE': 'NN'}, {'LOWER': 'v'}, {'IS_PUNCT': True},
{'IS_TITLE': 'NN'}, {'IS_TITLE': 'NN'}]
p5 = [{'IS_TITLE': 'NN'}, {'IS_TITLE': 'NN'}, {'IS_TITLE': 'NN'}, {'LOWER': 'v'},
{'IS_PUNCT': True}, {'IS_TITLE': 'NN'}, {'IS_TITLE': 'NN'}, {'IS_TITLE': 'NN'}]
p6 = [{'IS_TITLE': 'NN'}, {'IS_TITLE': 'NN'}, {'LOWER': 'v'}, {'IS_PUNCT': True},
{'IS_TITLE': 'NN'}, {'IS_TITLE': 'NN'}, {'IS_TITLE': 'NN'}]
p7 = [{'IS_TITLE': 'NN'}, {'LOWER': 'v'}, {'IS_PUNCT': True}, {'IS_TITLE': 'NN'},
{'IS_TITLE': 'NN'}, {'IS_TITLE': 'NN'}]
p8 = [{'IS_TITLE': 'NN'}, {'IS_TITLE': 'NN'}, {'IS_TITLE': 'NN'}, {'LOWER': 'v'},
{'IS_PUNCT': True}, {'IS_TITLE': 'NN'}]
p9 = [{'IS_TITLE': 'NN'}, {'IS_TITLE': 'NN'}, {'IS_TITLE': 'NN'}, {'LOWER': 'v'},
{'IS_PUNCT': True}, {'IS_TITLE': 'NN'}, {'IS_TITLE': 'NN'}]
p10 = [{'label': 'PERSON'}]
P11 = [{'label': 'ORG'}, {'label': 'PERSON'}]
p12 = [{'label': 'PERSON'}, {'label': 'ORG'}]
p13 = [{'label': 'ORG'}, {'label': 'ORG'}, {'label': 'ORG'}, {'label': 'ORG'}]
m_tool.add('QBF', None, p1, p2, p3, p4, p5, p6, p6, p7, p8, p9, p10, p11, p12, p13)
phrase_matches = m_tool(doc)
print(phrase_matches)发布于 2021-09-07 18:43:51
Philip,我希望通过分类为您提供一种更健壮的提取方法,而不是模式匹配。我真的很喜欢Prodigy现在支持的流程(创建了spaCy的爆炸的一部分),用于开发主动学习流程,以支持数据提取经常需要的持续改进。
使用NLTK的另一个地址示例:这是一个与您的相似的场景。https://onethinglab.com/2018/03/05/extracting-addresses-from-text/
模式和正则表达式对于您的用例来说是不够健壮的。
https://stackoverflow.com/questions/69034525
复制相似问题