专栏名称: 爬虫俱乐部
Stata技术控,编程技术咨询,数据讨论与分享,编程和实证培训。
目录
相关文章推荐
超级数学建模  ·  不到4折!KAYANO ... ·  昨天  
超级数学建模  ·  埃里森放话“48小时AI定制癌症疫苗”:是颠 ... ·  2 天前  
超级数学建模  ·  限时领 | ... ·  昨天  
51好读  ›  专栏  ›  爬虫俱乐部

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

爬虫俱乐部  · 公众号  ·  · 2017-09-11 15:44

正文


大大大大大 新闻 ————自公众号推送视频讲解环节以来,深受广大读者朋友的喜爱。近日向我们提问的粉丝也是大幅增加呐!为了便捷管理相关信息,提高工作效率,我们对提问方式做了略微调整哟~提问者需点击推文底部“ 阅读原文 ”下载爬虫俱乐部用户问

题登记表并按要求填写后发送至邮箱 [email protected] ,我们会及时为您解答哟~

从今天起,我们将用一系列推文为大家介绍如何使用stata进行 分词 、如何使用stata与python交互、以及如何通过stata调用curl使用Boson进行 分词

说到 分词 ,想必大家都听过用“果然”造句的段子。老师请小明用果然造句,小明说:“我先吃水果然后喝汽水。”老师说不对,小明又说:“我还没讲完呢,我先吃水果然后喝汽水,果然拉肚子了。”玩笑归玩笑, 分词 的正确与否对于我们理解一句话来说十分重要,有了 分词 我们才能更好地理解句子表达的意思。

词是最小的能够独立运用的语言单位,国际上常用的NLP算法,以及深层次的语法语义分析通常都是以词作为基本单位。由于中文的文本是由连续的字序列构成,词与词之间没有天然的分隔符,所以要理解一篇文章,我们首先要将一条长句切分为一个个词。今天我们先来介绍如何使用stata进行 分词

01

使用stata进行 分词 需要用到两个字符串函数 ustrwordcount() ustrword()

1. ustrwordcount() 的基本语法为: ustrwordcount(s[,loc])

s为字符串;locale 表示程序运行的不同语言环境,如“en”表示英文,“cn”表示中文,每一个locale对象都代表了一个特定的地理、政治和文化地区。如果未指定locale,则使用默认语言环境,例如,这台电脑的操作系统是Microsoft Windows中文版,则系统默认语言环境设置为“cn”。

该函数返回的是字符串s中非空的unicode单词个数。这里需要指明的是,unicode单词与由word()函数返回的单词不同,word(s,n)函数返回的是字符串s中第n个以空白字符分隔的字符串,而 ustrwordcount() 是以unicode单词为基础,返回unicode字符串中非空的unicode单词的数量,unicode单词是遵循一些语言(如中文,日语和泰语)的单词边界规则或字典的语言单位。

比如,我们运行:

di word("将爬虫 进行到底",2)

该函数返回的是第2个以空白字符分隔的字符串,所以结果为“进行到底”。

运行:

di ustrwordcount("将爬虫 进行到底","cn")

该函数返回的是按照中文词典进行 分词 的unicode单词个数,即“将”、“爬虫”、“进行”、“到底”,所以结果为4。

如果发生错误,该函数可能返回负数。

02

2. ustrword() 的基本语法为: ustrword(s,n[,loc])

该函数返回的是字符串s中第n个位置的unicode单词。n为正数表示的是从s开头数第n个unicode单词,n为负数表示的是从s结尾数第n个unicode单词。如n为1表示的是返回s的第一个unicode单词,n为-1表示的是返回s的最后一个unicode单词。如果n大于cnt或小于-cnt,则该函数返回缺失值,其中cnt是s所包含的unicode单词数,可以从 ustrwordcount() 中获得。如果发生错误,该函数也返回缺失值“”。

比如,我们运行:

di ustrword("将爬虫进行到底", 3, "cn")

输出结果为“将爬虫进行到底”中第3个unicode单词“进行”。

运行:

di ustrword("将爬虫进行到底", 5, "cn")

由于5大于unicode单词数4,输出结果为缺失值“”。

有了这两个字符串函数的基础,接下来我们就要用完整的例子介绍如何使用stata进行 分词 啦。我们用file命令将开头小明“果然”的段子输入到txt文件中,保存为“分词.txt”,放在路径“E:\分词与情感分析”下。

clear

cd E:\分词与情感分析

tempname handle

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

file write `handle' "小明说:“"

file write `handle' "我先吃水果然后喝汽水,"

file write `handle' "果然拉肚子了。”"

file close `handle'

shellout 分词.txt

可以看到txt文件中只有一行内容,我们用fileread函数将"分词.txt"的内容读入到stata中,同时生成一个变量v1为空。

set obs 1

gen v = fileread("分词.txt")

gen v1 = ""

取i为1到整个字符串所含unicode单词个数,做一个循环,依次将v1替换为前i个unicode单词,每个unicode单词间以空格隔开。

forvalues i = 1/`=ustrwordcount("`=v[1]'","cn")' {

replace v1 = v1 + ustrword("`=v[1]'", `i', "cn") + " "

}

br

可以看到,v1列出了这一行内容中每一个unicode单词并以空格分隔,这样用stata进行的简单 分词 就完成啦。但是stata 分词 是有其局限性的,例如不能显示词性,不能添加用户词典等。我们将在之后的推文中一一解决这些问题。

什么 ?!没看懂!!不要紧!! 戳下面 ,听爬虫小将的详细讲解,也欢迎大家的批评指正哟!


以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。 另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~

文字编辑:王    悦

技术总编:刘贝贝



往期推文推荐:

1. 高校学术大神:你的导师上榜了吗?

2.中国高校财经、管理与综合类期刊灌水排行榜

3. 命令 sum2docx 输出统计量表到 docx 文件

4. reg2docx 报告你的实证结果吧!

5. 爬虫俱乐部又出新命令了 ——wordconvert 转换你的 word 文件

6. putdocx+wordconvert— 将实证结果输出到 Word .docx )文档

7. Stata 15 Markdown—— 没有做不到,只有想不到!

8. 矩阵和宏的故事

9.







请到「今天看啥」查看全文