分享

听不懂人话?stata分词帮你搞定(二)

 张春强2022 2017-09-18

上一篇推文我们介绍了如何使用stata进行分词,今天主要介绍stata与Python交互调用pynlpir进行分词

一、stata与Python交互调用pynlpir进行分词

NLPIR汉语分词系统是一款功能很强大的分词工具,又名ICTCLAS2013,主要功能包括中文分词;词性标注;命名实体识别;用户词典添加;微博分词、新词发现与关键词提取等,支持GBK编码、UTF8编码、BIG5编码。而pynlpir提供了NLPIR/ICTCLAS汉语分词的Python接口。

我们首先安装pynlpir,打开cmd窗口,输入pip install pynlpir

在stata中调用Python程序的方式有很多,可以通过cmd来运行写好的python程序,也可以使用往期推文I have a Stata, I have a python中介绍的命令“python”。但由于“python”命令需要在电脑上安装Microsoft Visual Studio,并且Python的语言也无法写入stata的do文件中运行,而如果在命令框中用回车键换行,就会直接运行命令并报错,所以在stata中通过调用cmd来运行Python写好的程序远远比用stata中的python命令方便的多。

我们爬虫俱乐部团队前段时间去了温州呢(详见《第一届Stata中国用户大会在温州商学院圆满闭幕——“通过新技术获取实时的高品质数据已成潮流”》),一提到温州,总是能首先想到江南皮革厂那洗脑力满分的广告词,我们就对这个来分词吧。怎么用stata来写Python命令呢?用file write就好了。我们用file命令编辑Python脚本,写入江南皮革厂的广告词,调用pynlpir进行分词。

clear all

cd E:/分词与情感分析

tempname handle

file open `handle' using 分词.py, replace text write

file write `handle' `'import pynlpir'' _n //导入pynlpir模块

file write `handle' `'pynlpir.open(encoding='utf8')'' _n //初始化模块

file write `handle' `'string = '浙江温州,浙江温州,''

file write `handle' `'最大皮革厂,江南皮革厂倒闭了!''

file write `handle' `'老板黄鹤吃喝嫖赌,欠下了3.5个亿,''

file write `handle' `'带着他的小姨子跑了。''

file write `handle' `'我们没有办法,拿着钱包抵工资。''

file write `handle' `'原价都是三百多、二百多、一百多的钱包,''

file write `handle' `'通通二十块,通通二十块!''

file write `handle' `'黄鹤你不是人,我们辛辛苦苦给你干了大半年,''

file write `handle' `'你不发工资,你还我血汗钱,还我血汗钱!''' _n //定义一段文本

file write `handle' `'seg_list = pynlpir.segment(string, pos_tagging=True)'' _n //切词,pos_tagging=True表示显示词性

file write `handle' `'for word in seg_list:'' _n

file write `handle' `' print(word)'' //把切词结果里的每一个词打印出来

file close `handle'

在stata中,调用cmd来运行Python程序“分词.py”,并将结果导入“分词结果.txt”。

! python 分词.py > 分词结果.txt

shellout 分词结果.txt

如上图所示,切词结果里的每一个词都被列了出来,并标注了词性。

二、添加用户词典进行分词

很多时候,我们需要在基础词典上添加自定义的词汇,适应特定的分词任务。汉语分词系统进行的分词,会把“江南皮革厂”分为“江南”、“皮革”、“厂”。

我们添加用户词典“dict.txt”,把“江南皮革厂”作为新增的词。

clear all

cd E:/分词与情感分析

tempname handle

file open `handle' using 分词1.py, replace text write

file write `handle' `'import pynlpir'' _n

file write `handle' `'import os'' _n //导入os模块

file write `handle' `'os.chdir('E:/分词与情感分析/')'' _n //改变工作路径到“E:/分词与情感分析”

file write `handle' `'pynlpir.open(encoding='utf8')'' _n

file write `handle' `'pynlpir.nlpir.ImportUserDict(b'dict.txt')'' _n //导入用户自定义的词典

file write `handle' `'string = '浙江温州,浙江温州,''

file write `handle' `'最大皮革厂,江南皮革厂倒闭了!''

file write `handle' `'老板黄鹤吃喝嫖赌,欠下了3.5个亿,''

file write `handle' `'带着他的小姨子跑了。''

file write `handle' `'我们没有办法,拿着钱包抵工资。''

file write `handle' `'原价都是三百多、二百多、一百多的钱包,''

file write `handle' `'通通二十块,通通二十块!''

file write `handle' `'黄鹤你不是人,我们辛辛苦苦给你干了大半年,''

file write `handle' `'你不发工资,你还我血汗钱,还我血汗钱!''' _n

file write `handle' `'seg_list = pynlpir.segment(string, pos_tagging=True)'' _n

file write `handle' `'for word in seg_list:'' _n

file write `handle' `' print(word)''

file close `handle'

! python 分词1.py > 分词结果1.txt

shellout 分词结果1.txt


从运行结果我们可以看到,“江南皮革厂”变成了一个词。

看不懂的记得戳下方视频哦~


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多