有问题,不要怕!点击推文底部“阅读原文”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~
在《听不懂人话?stata分词帮你搞定(一)》中,我们介绍了如何使用stata进行简单的分词,但由于stata进行的分词不能显示词性也不能添加词典,《听不懂人话?stata分词帮你搞定(二)》中我们又介绍了如何使用stata与Python交互调用pynlpir以及添加词典进行分词。有粉丝留言说我们用的江南皮革厂的例子都可以跟着节奏念起来,看来分词的效果还是不错的呢~那今天我们就继续放大招:介绍stata与Python交互调用jieba进行分词,它能够实现不同精度模式下的分词哦。
结巴(jieba)是国人推出的一个精品插件,可以对一段中文进行分词,目前已有Python、JAVA、C++和Nodejs版本,可以适应不同需求。我们调用dos命令,运行
!pip install jieba
安装jieba
jieba有三种分词模式:全模式可以列出句子中所有能够成词的词语,如输入文本“皮革厂”,全模式下会将 “皮革”、“皮革厂”都列出,速度非常快,但是不能解决歧义,如“武汉市/长江大桥”和“武汉/市长/江大桥”。精确模式试图将句子最精确地切开,会列出不重复的所有词,适合进行文本分析。搜索引擎模式在精确模式的基础上,对长词再次切分,适合用于搜索引擎分词。今天我们主要介绍全模式和精确模式。在Python中,调用jieba进行分词时,cut_all = True表示全模式,cut_all = False表示精确模式。
全模式
我们用file命令编辑Python脚本,调用jieba使用全模式进行分词。
clear all
cd E:/分词与情感分析
tempname handle
file open `handle' using 分词.py, replace text write
file write `handle' `"import jieba"' _n //导入jieba模块
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 = jieba.cut(string, cut_all = True)"' _n // jieba.cut方法接受两个输入参数:第一个参数为需要分词的字符串,第二个参数cut_all用来控制是否采用全模式,cut_all = True表示全模式
file write `handle' `"for word in seg_list:"' _n
file write `handle' `" print(word)"'
file close `handle'
! python 分词.py > 分词结果.txt
shellout 分词结果.txt
可以看出,全模式会把句子中所有可以成词的词语全部列出来。
精确模式
我们用file命令编辑Python脚本,调用jieba使用精确模式进行分词。
clear all
cd E:/分词与情感分析
tempname handle
file open `handle' using 分词1.py, replace text write
file write `handle' `"import jieba"' _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 = jieba.cut(string, cut_all = False)"' _n //cut_all = False表示精确模式
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
可以看出,精确模式能够将句子最精确地切开,会列出不重复的所有词,相对于全模式来说更加适合进行文本分析。
有时候,根据不同的分词需求,还要获得词性,我们在Python中调用jieba进行分词时可以通过import jieba.posseg加载jieba词性标注模块。
clear all
cd E:/分词与情感分析
tempname handle
file open `handle' using 分词2.py, replace text write
file write `handle' `"import jieba.posseg"' _n //加载jieba词性标注模块
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 = jieba.posseg.cut(string)"' _n //对文本切词并显示词性
file write `handle' `"for word in seg_list:"' _n
file write `handle' `" print(word.word, word.flag)"' //把切词结果里的每一个词及词性打印出来
file close `handle'
! python 分词2.py > 分词结果2.txt
shellout 分词结果2.txt
可以看到,输出结果列出了分词后的每个词和相应的词性,如ns表示地名,a表示形容词,v表示动词,ul表示“了”“喽”等。
看不懂的记得戳下方视频哦~
以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!
应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做 事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~
文字编辑:闫续文
技术总编:刘贝贝
往期推文推荐:
5.爬虫俱乐部又出新命令了——wordconvert转换你的word文件
6.putdocx+wordconvert—将实证结果输出到Word(.docx)文档
7.Stata 15之Markdown——没有做不到,只有想不到!
关于我们
微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。
此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。
欢迎关注爬虫俱乐部
微信扫一扫
关注该公众号