基于NLTK的中文文本内容抽取方法
李晨;刘卫国
【摘 要】NLTK是Python中用于自然语言处理的第三方模块,但处理中文文本具有一定局限性.利用NLTK对中文文本中的信息内容进行抽取与挖掘,采用同语境词提取、双连词搭配提取、概率统计以及篇章分析等方法,得到一个适用于中文文本的NLTK文本内容抽取框架,及其具体的实现方法.经实证分析表明,在抽取结果中可以到反映文本特点的语料内容,得到抽取结果与文本主题具有较强相关性的结论.
【期刊名称】《计算机系统应用》
【年(卷),期】2019(028)001
【总页数】4页(P275-278)
【关键词】自然语言处理;中文文本;自然语言处理工具包
【作 者】李晨;刘卫国
【作者单位】中南大学信息科学与工程学院,长沙410083;中南大学信息科学与工程学院,长沙410083python正则表达式爬虫
【正文语种】中 文
NLTK的默认处理对象是英文文本, 处理中文文本存在一定的局限性, 主要体现在以下两点:
(1) NLTK素材语料库中缺少中文语料库, 在NLTK模块中包含数十种完整的语料库, 例如布朗语料库、古腾堡语料库等, 但没有中文语料库. 另外, NLTK也没有中文停用词语料库, 在文本预处理中, 特别是在进行频率统计之前需要使用停用词语料库对文本进行过滤清洗, NLTK没有提供针对中文的停用词库, 使用针对英文的过滤方法是无法完成中文文本的停词过滤.
(2)在英文文本中, 文本的分割可以由单词之间的空格完成, 但是中文文本的分割依靠NLTK是无法完成的, 中文分词工作需要借助分词工具来完成, 已有的一些中文分词工具有结巴分词(jieba)、斯坦福中文分词器等.
本文应用NLTK对中文文本进行信息抽取.
1 NLTK文本内容抽取框架
使用NLTK对自然语言文本中词句内容进行提取与分析, 可以概括为筛选、提取、统计、解释的过程[1,2]. 抽取方法首先对其中无实际含义的词汇进行筛选过滤, 使用概率统计方法提取出高频词集, 接着识别出文本的关键词, 选定研究词汇. 以该词汇作为目标词,查其所在的句子, 对段落、篇章内的词汇进行计数统计与篇章分析, 解释文本内容与研究问题. 为此将以上过程简化为三个阶段, 分别是预处理、分析以及输出阶段, 如图1所示.
图1 NLTK抽取框架
1.1 预处理阶段
预处理阶段是确定文本并对文本进行简单处理的过程, 预处理方法主要有分块与分词、清洗过滤. 分块与分词是对文本进行切分的操作, 由于分析阶段各方法调用对象的不同, 文本需要划分成不同子单位的文本, 例如以词为最小单位的文本、以句为最小单位的文本. 清洗过滤是对文本分词处理后删去文本中无实际意义的词汇符号的过程.
1.2 分析阶段
分析阶段是抽取过程的核心, 涉及到文本的一系列处理操作. 文本经预处理阶段以词、句、篇章为基本单位进行切分后, 在这三个维度上使用不同的分析方法. 经分词处理后, 针对单个词汇进行的操作有双连词提取、同语境词提取. 在单个句子上可执行的操作有词性标注、句法分析. 在篇章中可以进行篇章分析[3]与统计分析, 其中统计分析是最常使用的工具. 例如,在对布朗语料库[4]的研究中, 以概率统计的方法得到不同文体中情态动词的频率分布, 归纳总结出情态动词在文体中的分布规律, 从而对文本的文体进行判断.
1.3 输出阶段
文本的抽取结果分为两大类, 一类是将提取出词与句子等结果作为原始依据, 对文本内容含义进行解释; 第二类是以可视化的形式展示数据结果, 更加直观地体现词汇频率的对比.
2 NLTK对文本的处理方法
2.1 预处理方法
2.1.1 对原始文本分词与分句
在NLTK中, 分词分句操作可以将文本处理成可以单独调用的词或句子. 分词是将句子序列或字符串构成的文本划分成单个的词. 分句是将文本中的篇章段落划分成单个的句子. 使用nltk.word_tokenize()、nltk.sent_tokenize()进行分词与分句操作. 分词处理后文本中的词汇、符号转化为单一标识符, 这是进行后续分析工作的关键.
2.1.2 对原始文本进行清洗过滤
清洗与过滤实际上是一个分类的过程, 使用正则表达式匹配需要过滤掉的数字与符号, 对文档中的纯文本内容进行提取. 然后, 利用停用词语料库对文本实现过滤, 停用词语料库中包含无实际意义的高频词汇,例如 a, to 等.
以下的命令定义了一个过滤英文停用词的函数,将文本中的词汇归一化处理为小写并提取, 从停用词语料库中提取出英语停用词, 使用词汇运算符将文本进行区分.
2.2 分析方法
2.2.1 同语境词查
NLTK中使用函数similar()查与目标词汇出现在相似上下文位置的词, 即在文本中可用作替换的词汇.在《白鲸记》中使用text.similar("captain")到以下同语境词: whale ship sea boat deck world other. 可以发现得到的词汇与目标词汇词性均为名词.
2.2.2 统计分析
概率统计作为最常用的数学分析手段, 用于文本中数据的处理分析. 在Python中借助NLTK频率分布类中的函数, 对文本中出现的单词、搭配、常用表达、符号进行频率统计、长度计算等相关操作, 使用fdist= nltk.FreqDist()对研究文本创建频率分布, 函数fdist['target word']查频率分布内目标词汇的出现次数, fdist. most_common(n)从频率分布中提取出高频词汇, 其中参数n为提取词汇的数量.
2.2.3 篇章分析
对篇章内容的分析也是使用NLTK对文本内容进行抽取的方法之一. 布朗语料库以文体作为分类标准.根据这一特点, 利用布朗语料库探索词汇在不同文体中的使用情况. 使用条件概率的方法, 选择布朗语料库中6个不同的文体类型分别统计wh-词的使用情况. 命令如下:
命令执行后, 以表格的形式打印所得结果如图2所示.
图2 频率统计结果
从结果上来看, 在religion与news文体中which和who出现次数较多, hobbies文体中when、which、who出现较多, 而在science_fiction与humor文体中wh-词出现的次数较为均匀, 在romance文体中what、when、which出现次数较多. 使用条件概率的方法到文体中同类型词使用差异, 以表格的形式展示结果[5].