从非结构化文本中提取特定类型的数据,即研究所

时间:2019-05-14 10:00:56

标签: python nlp information-extraction

我需要从给定的数据中提取研究所的名称。研究所的名称将看起来相似(安娜大学,马什沙技术学院,班格勒工程学院,模型工程学院)。将会有很多类似的数据。我想从文本中提取这些。如何创建一个模型以从数据中提取这些名称(我需要从简历中提取)。

我曾尝试过添加一些新的NER,但是即使经过培训,损失也不会减少,而且预测是错误的。这就是为什么我要为此创建一个新模型。

2 个答案:

答案 0 :(得分:1)

您正在进行文本解析。

我知道您想为此建立一个模型,但是如果没有目标数据(文本示例和这些文本中的学校名称列表),您将无法做到这一点,我认为您没有。我建议您自己做,不要自学模型。

您最好的选择是正则表达式。

import re
sub_patterns = ['[A-Z][a-z]* University',
                'University of [A-Z][a-z]*',
                'Ecole [A-Z][a-z]*']
pattern = '({})'.format('|'.join(sub_patterns))
matches = re.findall(pattern, mystring)

我使用了this site中的文字,然后得到了:

matches
['University of Cambridge',
 'University of Oxford',
 'Harvard University',
 'Columbia University',
 'Princeton University',
 'University of Chicago',
 'Stanford University',
 'Yale University',
 'University of California',
 'Humboldt University',
 'Cornell University',
 'University of Pennsylvania',
 'University of London',
 'Uppsala University',
 'University of Edinburgh',
 'Heidelberg University',
 'University of California',
 'York University',
 'University of Michigan',
 'Hopkins University',
 'University of Vienna',
 'University of G',
 'State University',
 'University of Bologna',
 'Leipzig University',
 'Maximilian University',
 'University of Southern',
 'University of Tokyo',
 'Leiden University',
 'Lund University',
 'Charles University',
 'University of Copenhagen',
 'Ecole Normale',
 'University of Manchester',
 'Ecole Polytechnique',
 'University of Bonn',
 'University of Texas',
 'Duke University',
 'Mellon University',
 'Azhar University',
 'University of Helsinki',
 'University of Virginia',
 'Hebrew University',
 'University of Toronto',
 'University of Illinois',
 'Sapienza University',
 'University of Zurich',
 'University of Washington',
 'University of Minnesota',
 'Georgetown University',
 'University of Wisconsin',
 'Gill University',
 'University of Glasgow',
 'University of Oslo',
 'Peking University',
 'State University',
 'Brown University',
 'University of T',
 'Jagiellonian University',
 'State University',
 'Free University',
 'Kyoto University',
 'University of Padua',
 'Waseda University',
 'University of Florida',
 'University of Geneva',
 'State University',
 'University of Jena',
 'Keio University',
 'University of Arizona',
 'University of Maryland',
 'Stockholm University',
 'Boston University',
 'University of Strasbourg',
 'University of Tartu',
 'Rutgers University',
 'University of Warsaw',
 'Utrecht University',
 'University of North',
 'Rockefeller University',
 'Luther University',
 'Tsinghua University',
 'University of St',
 'University of Amsterdam',
 'Northwestern University',
 'University of Notre',
 'Technical University',
 'University of Coimbra',
 'Indiana University']

如您所见,Massachusetts Institute of Technology没有出现,我们得到Ecole Normale而不是Ecole Normale Superieure,得到了University of G而不是University of Göttingen(因为ö不是[az]中),还有其他错误。

因为我写的模式还不够好,所以这些完全正常。现在,为数据建立良好的模式是您的工作。

您可能还需要文本预处理以简化此任务,例如将文本转换为ascii小写字符。

答案 1 :(得分:0)

您遇到的问题已通过专门的文本搜索和文本分析工具解决。使用语音分析和索引。

Elasticsearch是流行的文本分析工具之一。 您可以使用REST API为文档建立索引并进行搜索。

Google还提供了用于文本分析和索引编制的工具。

Oracle和PostgresSQL等现代RDBMS工具也提供了此类功能。

祝你好运。