edwardsayer / jcseg

Automatically exported from code.google.com/p/jcseg
0 stars 0 forks source link

您好,请问以特殊标点符号开头或者结尾的符号能不能保留下来呢 (已解决) #18

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
我遇到的问题如下:
比如想对一个数学表达式进行分词,想保留该表达式原型,��
�配制项里面开启了支持特殊标点的功能,但以特殊标点符号�
��头或者结尾的符号不能保留下来,被去掉了。
如: [(x+y)=2] 分词后的结果是  x+y)=2 
我想分词后结果还是[(x+y)=2],请问应该怎么做呢?谢谢!

Original issue reported on code.google.com by yhl880...@gmail.com on 10 Mar 2014 at 8:40

GoogleCodeExporter commented 9 years ago
@yhl880818 恩,可以保留后面的,但是无法保留前面的标点。

你需要的是匹配一种模式,而不是特定的词条,对于你的这种�
��求需要稍微对源码做下修改。

best
--chenxin

Original comment by chenxin6...@gmail.com on 11 Mar 2014 at 3:13

GoogleCodeExporter commented 9 years ago
谢谢!还有个问题想问您,就是配置项中的
#最大的配对标点内容长度。
jcseg.pptmaxlen=15
这个配置项主要用来做什么的?我修改了下,发现好像没什��
�区别啊?

Original comment by yhl880...@gmail.com on 12 Mar 2014 at 2:41

GoogleCodeExporter commented 9 years ago
嗯,这个配置是对应jcseg的配对标点内容匹配功能,例如:《
Java编程思想》,《》中的内容的最大长度。如果用在检索领�
��这个没必要。开发这个功能用于数据分析的。。。。。

Original comment by chenxin6...@gmail.com on 12 Mar 2014 at 3:38

GoogleCodeExporter commented 9 years ago
好的,谢谢您。刚才我在测试的过程中又遇到一个问题:
对于数学表达式sinα+cosα=1(α是希腊字母)的分词结果是 sin 
α + cos α = 1,我想分词后保留完整的
表达式sinα+cosα=1,可以通过配置来实现吗?
如果是sina+cosa=1(a为普通的字母),这种方式我可以通过配置保
留完整的表达式,但是分词结果中还有单独的sina和cosa,我想
只保留sina+cosa=1的分词结果,这样可以实现吗?问题有点多,
麻烦您了,谢谢!

Original comment by yhl880...@gmail.com on 12 Mar 2014 at 5:05

GoogleCodeExporter commented 9 years ago
嗯,对于第一种情况,因为jcseg没有将希腊自己和英文字母当
做同一中类型来处理。所以,会被切分开(更改源码的org.lion
soul.jcseg.filter#isHWEnChar和isFWEnChar加入对希腊自己Unicode编码范��
�的判断)。

第二种情况:通过配置是可以切分出来的,至于你的说的分��
�切分结果中还有sina和cosa,那是因为jcseg的二次切分效果,应
用在检索领域来提高检索命中率,jcseg.properties配置文件中设�
��jcseg.ensencondseg = 0来关闭即可。

best
--chenxin

Original comment by chenxin6...@gmail.com on 12 Mar 2014 at 6:45

GoogleCodeExporter commented 9 years ago
第二种情况按照您的解释已经可以了,第一种情况准备现在��
�试下,先谢啦~~以后多向您学习哈

Original comment by yhl880...@gmail.com on 12 Mar 2014 at 6:49

GoogleCodeExporter commented 9 years ago
您好,安照您之前的做法,我替换了org.lionsoul.jcseg.filter#isFWEn
Char的方法,增加了
( c >= 700 && c < 
2030)的判断,但测试发现sinα+cosα=1的分词结果为:sin α-cos 
α=1 不是预期的sinα+cosα=1;
后来在org.lionsoul.jcseg.filter#isHWEnChar的方法中也增加了( c >= 700 
&& c < 
2030)的判断,可结果还是一样,不知道是不是我那判断范围错
了还是其他的原因?
(已经关闭了二次分词功能jcseg.ensencondseg = 0)

Original comment by yhl880...@gmail.com on 12 Mar 2014 at 9:18

GoogleCodeExporter commented 9 years ago
应该是Unicode编码范围的问题。具体查看下:http://wenku.baidu.com
/view/e4c8893f5727a5e9856a6180.html

然后将问题加入到上面提到的两个函数即可。

Best
--chenxin

Original comment by chenxin6...@gmail.com on 12 Mar 2014 at 12:42

GoogleCodeExporter commented 9 years ago
根据您的思路已经把问题解决了,谢谢!
不过我改的不是org.lionsoul.jcseg.filter#isHWEnChar和isFWEnChar这两个�
��数,是改了isEnLetter和getEnCharType这两个函数,在这两个函数�
��加入了对希腊字符的支持

Original comment by yhl880...@gmail.com on 13 Mar 2014 at 5:04

GoogleCodeExporter commented 9 years ago
嗯,具体我也需要查看源码才知道。不过,问题解决就好,��
�喜。。

Best
--chenxin

Original comment by chenxin6...@gmail.com on 13 Mar 2014 at 5:08

GoogleCodeExporter commented 9 years ago
以后有问题还得请教您哈~~

Original comment by yhl880...@gmail.com on 13 Mar 2014 at 6:00

GoogleCodeExporter commented 9 years ago
没问题,不过改“您”为“你”吧。我90后的,关键的是没必
要,^-^

Original comment by chenxin6...@gmail.com on 13 Mar 2014 at 6:57

GoogleCodeExporter commented 9 years ago
ok,没问题,哈哈~~

Original comment by yhl880...@gmail.com on 13 Mar 2014 at 8:58