有问题,不要怕!点击推文底部“阅读原文”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~
上一篇推文我们介绍了如何使用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
从运行结果我们可以看到,“江南皮革厂”变成了一个词。
看不懂的记得戳下方视频哦~
以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!
应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做 事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~
文字编辑:王 悦
技术总编:刘贝贝
往期推文推荐:
5.爬虫俱乐部又出新命令了——wordconvert转换你的word文件
6.putdocx+wordconvert—将实证结果输出到Word(.docx)文档
7.Stata 15之Markdown——没有做不到,只有想不到!
关于我们
微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。
此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。
欢迎关注爬虫俱乐部
微信扫一扫
关注该公众号