在任何业务中,word文档都是很常见的,它们以原始文本、表格和图像的形式包含信息,所有这些都包含重要的事实。此代码模式[1]中使用的数据来自维基百科的两篇文章。第一个摘自肿瘤学家Suresh H. Advani的维基百科页面,第二个摘自关于肿瘤学的维基百科页面。这些文件被压缩为archive.zip文件[2]。
在下面的图中,有一个关于肿瘤学家Suresh H. Advani的文本信息出现在word文档中,还有一个表格包括他曾获多个机构颁发的奖项。
在这个代码模式中,我们解决了从word文档中的文本和表格中提取知识的问题。然后从提取的知识中构建知识图谱,使知识具有可查询性。
而从word文档中提取知识过程中的遇到一些挑战主要为以下两个方面:
-
自然语言处理(NLP)工具无法访问word文档中的文本。word文档需要转换为纯文本文件。
-
业务和领域专家能够了解文档中出现的关键字和实体,但是训练NLP工具来提取领域特定的关键字和实体是一项很大的工作。此外,在许多场景中,找到足够数量的文档来训练NLP工具来处理文本是不切实际的。
在此模式中我们采用以下方法克服遇到的这些挑战:
-
使用基于python的mammoth库将.docx文件转化为html文件(半结构化格式)
-
Watson Natural Language Understanding(Watson NLU)用于提取常见的实体。
-
使用基于规则的方法来扩展Watson NLU的输出(这种方法的解释参见代码模式Extend Watson text Classification [3])。基于规则的方法不需要训练文档或训练工作。算法将配置文件作为输入,而此文件需要由领域专家配置。
-
使用Watson NLU提取实体之间的关系。
-
使用基于规则的方法来扩展Watson NLU的输出(这种方法的解释参见代码模式Watson Document Correlation[4])。基于规则的方法不需要训练文档或训练工作。算法将配置文件作为输入,而此文件需要由领域专家配置。
两全其美的方法--同时使用基于训练和规则的方法从文档中提取知识。
在这个模式中,我们将演示:
-
从包含自由浮动的文本和表格文本的文档中提取信息。
-
清理数据[3]模式以从文档中提取实体
-
使用Watson Document Correlation[4]模式提取实体之间的关系
-
从提取的知识中建立一个知识图谱。
是什么让这个代码模式具有价值:
-
处理docx文件中的表格和自由浮动文本的能力。