[八]机器学习之隐马尔科夫模型HMM

8.1 目标任务

1.用jieba库实现中文词性标注

2.用SnoeNLP库实现中文词性标注

8.2 实验数据

novel.txt

8.3 实验过程

8.3.1 实验准备

1.安装jieba库:

pip install jieba

jieba库繁体分词和自定义词典,它支持三种分词模式:

精确模式,试图将句子最精确地切开,适合文本分析

全模式,把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义

搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词

下载地址:https://pypi.python.org/pyp/jieba

2.安装SnowNLP库:

pip install snownlp

SnowNLP受到了TextBlob的启发而撰写的中文处理python类库,自带一些训练好的字典。可完成中文分词、词性标注、情感分析、文本分类、文字转拼音、繁体转简体、提取文本关键词、提取文本摘要等功能。

下载地址:https://github.com/isnowfy/snownlp

3.安装nlth库:

pip install nltk

自然语言工具包(nltk)是用于处理自然语言语法及语义分析的python库,它提供超过50个语料库和词典资源,文本处理库包括分类、分词、词干提取、解析、语义推理。

下载地址:https://pypi.python.org/pypi/nltk

如果使用的anaconda安装的python,则已经自动导入了nltk,只需下载数据包到python安装目录即可。

8.3.2 数据的输入输出

将输入数据文件放到自己指定的目录下,输出即可在命令行,也可输出到txt文件查看。

8.3.3 实验步骤

实验一、使用jieba进行中文词性标注

1.导入jieba库

将工作路径切换到python安装目录,输入pip2 install jieba,等待下载安装即可。

2.导入成功后将工作路径切换到数据文件所在目录

进入python环境,输入以下命令:

import jieba
import jieba.posseg
filein = open('./novel.txt','r')
str = filein.read()
seg = jieba.posseg.cut(str)
l = []
for i in seg:
    l.append((i.word,i.flag))

print l

实现分词:

可将分词结果输出到文件:

import jieba
import jieba.posseg
filein = open('./novel.txt','r')
str = filein.read()
seg = jieba.posseg.cut(str)
fout = open('novel_out.txt','w')
for i in seg:
    s = i.word+'\t'+i.flag+'\n'
    fout.writelines(s.encode('utf-8'))

fout.close()

实验二、使用SnowNLP进行中文分词

1.导入SnoeNLP库

2.进入python环境,输入以下代码:

from snownlp import SnowNLP
fin = open('novel.txt','r')
str = fin.read()
str = str.decode('utf-8')
s = SnowNLP(str)
fout = open('novel_out_snownlp.txt','w')
for i in s.tags:
    s = i[0]+'\t'+i[1]+'\n'
    fout.writelines(s.encode('utf-8'))

fout.close()

8.4 结果分析

尽管都采用HMM模型,可以发现两个库对相同文件的分词结果略有差异,在对空格等细节的处理上也不同。这应该与使用了不同的训练数据和不同的词库有关。

猜你喜欢

转载自blog.csdn.net/gengkui9897/article/details/83099605