楼主: 朽木七根
23932 40

[问答] 请问R如何自定词典进行分词 [推广有奖]

21
yk数据挖掘 发表于 2015-11-17 17:16:40
松子茶hc 发表于 2015-11-3 16:17
果然是编码的问题,已经按照你的方法解决啦~~谢谢!另外请问一下,在分词的时候安装了停用词库,想将停用 ...
你好,请问一下,用R做分词的时候,自定义词典加载成功了,但是分词的时候,自定义词典只有一部分生效,是什么原因?急求!

22
yk数据挖掘 发表于 2015-11-17 17:21:33
jiangbeilu 发表于 2015-10-29 21:50
我知道是什么原因了,是因为在windows下,你用txt文件,默认的是ansi格式的数据。

你只需要把编码变成 ...
你好,请问一下,用R做分词的时候,自定义词典加载成功了,但是分词的时候,自定义词典只有一部分生效,是什么原因?急求!

23
jiangbeilu 学生认证  发表于 2015-11-17 17:33:31
yk数据挖掘 发表于 2015-11-17 17:21
你好,请问一下,用R做分词的时候,自定义词典加载成功了,但是分词的时候,自定义词典只有一部分生效,是 ...
可能是这样的情况:比如你定义了“2012”,但“2012年”是系统里的词,这样你还是会分出2012,2012年这两种类型的。

24
yk数据挖掘 发表于 2015-11-18 09:51:40
jiangbeilu 发表于 2015-11-17 17:33
可能是这样的情况:比如你定义了“2012”,但“2012年”是系统里的词,这样你还是会分出2012,2012年这两种 ...
恩,按你的这种说法,他能分出来”2012“和”2012年“这两种是吗,可是我的是,比如我添加了sc到航班的词库,然后分词的时候,文本里有一个航班号sc7518次航班,正常来说它应该把我这个sc分成是航班类型的,但是我测试的时候,它把sc分成了en类型的,我怀疑是不是自定义词典和它本身的分词规则起冲突了?是不是有优先级?

25
yk数据挖掘 发表于 2015-11-18 09:59:48
jiangbeilu 发表于 2015-11-17 17:33
可能是这样的情况:比如你定义了“2012”,但“2012年”是系统里的词,这样你还是会分出2012,2012年这两种 ...
而且自定义词典里,有一部分的航班类型的生效了,有一部分没生效,所以我感觉没生效的那一部分是跟Rwordseg本身的分词有冲突了,但是以Rwordseg优先,所以分成了en类型,不知道我理解的对不对
已有 1 人评分经验 学术水平 收起 理由
jiangbeilu + 20 + 1 精彩帖子

总评分: 经验 + 20  学术水平 + 1   查看全部评分

26
jiangbeilu 学生认证  发表于 2015-11-18 11:12:08
yk数据挖掘 发表于 2015-11-18 09:59
而且自定义词典里,有一部分的航班类型的生效了,有一部分没生效,所以我感觉没生效的那一部分是跟Rwords ...
这个应该是本身有的,你需要移除词库里的词,然后添加自己的。

另外分词还有最大和最小分法,对sc1234来说,sc和sc1234都在词库里,采用最小的话,就会分出sc 1234,采用最大分词,就会分出sc1234.

这个是我的理解,分词这一块我也才接触,只是在
https://bbs.pinggu.org/thread-3988804-1-1.html
用的,2012和 2012年 这两个者分的结果就是我上面说的。如果你研究出来的,也告诉我一声,最近在学Python,过几天再来研究一下R里的分词。

27
松子茶hc 发表于 2015-11-18 11:28:30
yk数据挖掘 发表于 2015-11-18 09:51
恩,按你的这种说法,他能分出来”2012“和”2012年“这两种是吗,可是我的是,比如我添加了sc到航班的词 ...
我看有说要先删除名字的词典,不知道有没有关系,我的分的也不是很准确,我加载的停用词库都没有被删除

28
yk数据挖掘 发表于 2015-11-18 14:46:46
jiangbeilu 发表于 2015-11-18 11:12
这个应该是本身有的,你需要移除词库里的词,然后添加自己的。

另外分词还有最大和最小分法,对sc1234 ...
恩,我这是把sc1234分成了sc和1234,sc的类型是en类型的,1234是m类型的,而我自定义的词典里是把sc定义为airport类型的,假如我有一个航班是2k1234的话,他就会把2k分成airport类型,1234分成m类型;我的自定义词典里sc和2k都是airport类型的,所以我说它是部分生效了,你说的移除词库里的词这个我没做过,我现在是没移除,然后加了自定义词库,结果就这样了

29
yk数据挖掘 发表于 2015-11-18 14:49:58
松子茶hc 发表于 2015-11-18 11:28
我看有说要先删除名字的词典,不知道有没有关系,我的分的也不是很准确,我加载的停用词库都没有被删除
删除名字的词典?是它对这个分词结果照成了影响是吗?另外你加载停用词库是加载哪里呢?跟自定义词库一样吗?如果是的话,你想让他删除这些停用词的话,需要在代码去剔除分出来的这些停用词的,不是只加停用词库就可以的,个人感觉

30
jiangbeilu 学生认证  发表于 2015-11-18 15:14:07
yk数据挖掘 发表于 2015-11-18 14:49
删除名字的词典?是它对这个分词结果照成了影响是吗?另外你加载停用词库是加载哪里呢?跟自定义词库一样吗 ...
自定义词库我是用的 :insertWords( )
删除可以用:deleteWords( )
这两个都是临时的,你可以试一下。
加载停用词,我还没有专门探究,因为总是会出错,虽然之前的编码问题解决了。停用词的话,你可以先用gsub把这些词全部替换成空格,然后再分词。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-25 06:24