基于Drupal CMS的自然语言处理(NLP)

 

Drupal 作为CMS,内容存储工具,可以通过现有的模块,可以轻松集成一些NLP工具,来帮助我们对内容更加精准处理和优化。

使用基于Drupal模块的自动文本分析工具,可以轻松使用的 NLP 工具, 我们可以在不需要了解太多NLP的情况下,通过模块,使用各种NLP工具,比如一些 Python 自然语言工具包 (NLTK) 和 Stanford Parser 并用于对用户提供的文本进行统计分析。

 

 
 
 

NLP:Natural Language Processing

 

NLP介绍

自然语言处理 (NLP) 是计算机科学的一个领域,它关注的是计算机对人类语言的理解和解释。 NLP 在许多不同的应用程序中计算机科学、人工智能和语言学领域。其中许多应用程序需要使用统计数据来表征文本。这些统计数据可以使用 NLP 获得 Python 自然语言工具包 (NLTK) 和 Stanford Parser 等应用程序。

NTLK 是一个可以下载并在 Python 程序中使用的包,以便工作与人类语言数据。它包含用于分类、标记化、词干提取的库,标记、解析和语义推理。通过使用 NLTK,开发人员可以表征文本在统计方面,并从那里在其他 NLP 应用程序中使用这些统计数据。
Stanford Parser 是一个包含不同自然语言的 Java 实现的包语言解析器。解析器是生成用户提供的文本的解析树的 NLP 工具。解析树是表示句子语法结构的有序树,这个树描述了哪些词组在一起以及句子的主语和宾语。

Features Selection and Machine Learning

机器学习是构建可以从数据中学习或从实验数据训练的系统,在 NLP 领域,机器学习系统可以对多种不通的应用提供内容训练,这些可能包括作者署名,这是确定一个基于在其他作品中发现的特征的作品的作者,语音识别是将口头文字改编成文本,或任何其他应用程序。

机器学习使用称为特征选择的过程来选择相关特征用于机器学习模型和系统的构建。在这个特定的项目中,其中之一可以在 Stanford Parser 包中找到的解析器称为佩恩树库。使用 Penn Treebank 训练解析器可以让它学习一组语法注释数据并构建机器学习模型。解析器将是能够根据训练的数据创建句子的解析树。从这个项目中获得的统计数据可能被用作特征选择的一部分NLP 应用程序中的过程。统计数据可以用作不同作品的特征
并用于训练机器学习系统。

 

 

基于Drupal的NLP实现思路

本Drupal项目刚开始是直接使用了Node的原始文本数据,但是后来,我们将文本数据喂给了NLPStats Python 程序以便能调用到NLTK,该模块的总体架构相对简单,大部分功能由 NLPStats 程序完成,这模块实现hook,从数据库中提取节点内容,然后去除HTML 标签,并将其输出到一个临时文本文件,该模块然后调用 PHP shell_exec 命令执行 Python 并运行 NLPStats 程序, NLPStats 程序接受临时文本文件和其他参数,使用 NLTK对文本进行统计分析。

与此同时,它还将文本内容传递给 Stanford Parser ,它生成文本中每个句子的解析树, Stanford Parser 的结果然后返回到 NLPStats 并编译成其余的分析结果。然后将分析输出到模块读取的临时文本文件,模块将节点内容连同分析结果一起返回到 Drupal 以显示在网页上,具体的架构如下图所示:

 

 

 

数据处理实例

在目前的状态下,该项目能够分析和输出大约 17 种不同的特征文本,但是还有其他几个特征仍然可以分析,其中许多可以通过Stanford Parser 生成的解析树来获得。 目前的6个解析树仅用于输出给用户的其中一个特征。 特性可以分为三种不同的类型,包括文本的长度字符、单词、音节等的数量,分析分析树获得的数据,以及使用文本的长度计算可读性度量。

 

 

示例数据测试

为了了解这个项目的用处和潜在应用,我们将比较两个类似的文本,肯尼迪的就职演说和 马丁路德金的“我有一个梦想”的演讲。 这些作品是比较的好例子,因为它们都是演讲,并在 1960 年代的同一时期发表。 他们也有相似之处肯尼迪的演讲长度约为 1,300 字,“我有一个
梦想》的演讲,长度约为 1,600 字。 还有演讲的内容虽然不完全相同,但在某些方面是相似的。

由于这两个文本都是用来说而不是读的,所以有许多特征几乎没有变化,例如每个单词的字符、每个单词的音节和元音每个字。然而,在查看每个段落的单词时存在明显差异和每个句子的音节以及某些可读性度量。肯尼迪的演讲每段的字数较少,平均为 (49.25),最大值为 (96),而马丁的字数为平均 55.73,最大值 206。然而,肯尼迪的演讲每句话的音节更多平均为 35.18,最大值为 112,而马丁的平均值为 27.11,最大值为 97。
肯尼迪的演讲的 Flesch-Kincaid 评分为 10.746,而马丁的演讲评分为 8.659。这个在演讲的结构上表现出明显的差异。 肯尼迪有更长的句子包含
更多的单词,但是马丁有更长的段落,包含更多的句子,可以看两篇演讲就知道了。这也解释了可读性等级的差异,因为肯尼迪的演讲每个句子的音节更多,这些句子往往更复杂。经过使用这些数据,我们可以表征不同的作品并将这些表征用于不同的作者归属等应用程序。

 

 

 

结论

使用 Drupal 系统的自动文本分析是一个易于使用的 NLP 工具,可以快速收集文档的统计特征。 这种类型的工具可以用于多个作者归属和其他 NLP 相关机器学习系统等应用程序。

此外,除了NLTK,Drupal还可以集成更多AI文字工具,

Apache Stanbol对应的Drupal 模块 Auto Recommended Tags:

https://www.drupal.org/project/auto_recommended_tags 

Apache OpenNLP , 对应的Drupal 模块 Search API Solr NLP:

https://www.drupal.org/project/search_api_solr_nlp

所以,作为内容存储的CMS,Drupal本身集成第三方面文字处理模块是比较容易的。

 

更多资料可以参考我们之前的案例或者相关介绍文章,

1、Drupal的AI功能模块助力网站智能化

2、如何对音视频内容进行审核以及如何AI审核?

3、如何用开源的系统来构建知识库平台?

4、如何基于开源系统构建资料库/文档库平台

5、如何建设在线展览和多媒体展览?