|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2017/12/25 13:02:51 |
标题: |
|
加入我的收藏 |
楼主: |
能不能提供一下你封装的SCWS中文分词接口? 你以前帖子里的链接失效了,盒子里swish发的那个封装版有问题,取词不正确。
----------------------------------------------
- |
作者: |
|
2017/12/25 13:04:32 |
1楼: |
mmseg也不错
----------------------------------------------
-
|
作者: |
|
2017/12/25 13:08:07 |
2楼: |
@crystalmoon 能提供DELPHI接口吗?
----------------------------------------------
-
|
作者: |
|
2017/12/25 13:14:42 |
3楼: |
@wac1104 找到了一个下载,日期是2013-4-18。 但是分词有问题,尝试了调整参数也不行。 比如例句:“我名字叫李那曲是一个中国人, 我有时买Q币来玩, 我还听说过C#语言” 结果是: 1:名 2:字 3:叫李 4:那 5:曲是 6: 7:时 8:玩, 9:还 10:# 11:言
丢词,名词被分解成单字,即使设置了Duality :=true 和MultiModes := [mcmDuality] 也不能聚合单字
----------------------------------------------
-
|
作者: |
|
2017/12/25 15:35:39 |
4楼: |
FParser.Duality :=true; FParser.Charset :='gbk'; S :='成都合顺财务咨询有限公司成都公司注册_成都工商注册_成都注册公司_成都外资公司注册_成都工商注册代理代办'; //FParser.MultiModes :=[mcmZAll];
FParser.AddDict('D:\dictionary\dict.xdb',true); FParser.RuleFile :='D:\dictionary\rules.ini'; FParser.Parse(S);
以上是我的代码初始化的过程
----------------------------------------------
火鸟
|
作者: |
|
2017/12/25 15:46:29 |
5楼: |
XE6,按照你的代码一模一样运行:
var tmpclass: TSCWSWordParser; tmpresult: TSCWSResult; S: string; i: Integer; begin S :='成都合顺财务咨询有限公司成都公司注册_成都工商注册_成都注册公司_成都外资公司注册_成都工商注册代理代办';
tmpclass := TSCWSWordParser.Create(); tmpclass.Charset := 'gbk'; tmpclass.AddDict('E:\dictionary\dict.xdb', true); tmpclass.Duality := True; // tmpclass.EnableIgnore := true; // tmpclass.MultiModes := [mcmDuality]; tmpclass.RuleFile := 'E:\dictionary\rules.ini'; tmpresult := tmpclass.Parse(S); i := 0; while not tmpresult.Eof do begin Inc(i); Mdest.Lines.Add(IntToStr(i) + ':' + tmpresult.Text); tmpresult.Next; end; tmpresult.Free; tmpclass.Free;
end;
结果是:
1:都 2:务咨 3:册_ 4:_ 5:资 6:注 7:代
我发现,设置的词典根本没起作用,不管是GBK还是UTF8,我将目录名故意填错,返回的结果和上面也一模一样。
----------------------------------------------
-
|
作者: |
|
2017/12/26 9:55:30 |
6楼: |
这个本来就不是完美的,mmseg的结果也是有一点问题的。
此帖子包含附件:
大小:8.6K |
----------------------------------------------
-
|
作者: |
|
2017/12/26 11:28:26 |
7楼: |
@crystalmoon 你的mmseg是DELPHI接口吗?能否提供
----------------------------------------------
-
|
作者: |
|
2017/12/26 13:21:51 |
8楼: |
@wac1104
问题已解决,XE6下,接口的一些数据类型需要修改。 然后之前没有使用nextword这个函数。
谢谢你的提供的接口。
----------------------------------------------
-
|
作者: |
|
2017/12/27 14:50:44 |
9楼: |
这个火鸟大侠提供的接口在哪里可以下载?谢谢。
----------------------------------------------
-
|
作者: |
|
2017/12/27 15:04:07 |
10楼: |
我用武稀松大侠的版本,用你上面的代码测试了一下,结果跟你的一模一样。
----------------------------------------------
-
|
作者: |
|
2017/12/27 15:21:40 |
11楼: |
我用得就是武稀松得,调用得scws 库 只不过武稀松得我没找到dll 后来我下载scws 自己加了个dll导出 编译了一下打包起来了
----------------------------------------------
火鸟
|
作者: |
|
2017/12/27 17:44:50 |
12楼: |
这里有火鸟大大SCWS的包,在XE下把string都改为 rawbytestring就可以了。
----------------------------------------------
-
|
作者: |
|
2017/12/27 22:05:45 |
13楼: |
谢谢楼上。
有个新思路,不知道哪位大侠有兴趣:把cppjieba分词的C语言API(即dll),做个Delphi的接口就好。
在这:https://github.com/yanyiwu/cjieba
我没怎么研究,不过听说很多人用。
----------------------------------------------
-
|
作者: |
|
2017/12/28 11:12:05 |
14楼: |
同求cjiaba的DLL接口
----------------------------------------------
-
|
作者: |
|
2017/12/28 12:15:30 |
15楼: |
封装应应该相对简单,参考python代码,我之前就是参考python代码封装得webdriver4D的,自己多动动手没坏处。
----------------------------------------------
火鸟
|
作者: |
|
2017/12/28 12:45:56 |
16楼: |
……作为一个只用过DELPHI的极其业余的编程爱好者,难度有点大。
----------------------------------------------
-
|
作者: |
|
2017/12/28 13:56:09 |
17楼: |
@ badwood 不是的,没有Delphi的接口,我是看网上的用这个算法的人比较多。上面的图是其它软件里的,我试着编译了一个C的Dll,把按它格式写Delphi接口,没有成功(传入的字符串会有莫名奇妙的乱码,结果的length数值也不对。),附上半成品,有兴趣,你可以继续研究。
----------------------------------------------
-
|
作者: |
|
2018/1/18 19:26:54 |
18楼: |
经过一段时间对SWCS的DLL测试,这个没法实际应用,经常在分词时出现 Stack Overflow 错误。
----------------------------------------------
-
|
作者: |
|
2018/1/18 19:43:14 |
19楼: |
测试后发现,上述stack overflow 出现在 文本含有 “人大” 一词的情况下,也不知道还有多少这种特殊词
----------------------------------------------
-
|
作者: |
|
2018/1/19 17:34:33 |
20楼: |
C# 用盘古分词; dll的话,用——NLPIR.dll或ICTCLAS50.dll....
----------------------------------------------
相信自己,若自己都不相信,那还有谁可信。
|
|