DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: tigerleentu
今日帖子: 8
在线用户: 43
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 badwood (badwood) ★☆☆☆☆ -
盒子活跃会员
2017/12/25 13:02:51
标题:
wac1104 (火鸟)在吗? 浏览:1745
加入我的收藏
楼主: 能不能提供一下你封装的SCWS中文分词接口?
你以前帖子里的链接失效了,盒子里swish发的那个封装版有问题,取词不正确。
----------------------------------------------
-
作者:
男 crystalmoon (crystalmoon) ★☆☆☆☆ -
盒子活跃会员
2017/12/25 13:04:32
1楼: mmseg也不错
----------------------------------------------
-
作者:
男 badwood (badwood) ★☆☆☆☆ -
盒子活跃会员
2017/12/25 13:08:07
2楼: @crystalmoon
能提供DELPHI接口吗?
----------------------------------------------
-
作者:
男 badwood (badwood) ★☆☆☆☆ -
盒子活跃会员
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] 也不能聚合单字
----------------------------------------------
-
作者:
男 wac1104 (火鸟) ★☆☆☆☆ -
普通会员
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);

以上是我的代码初始化的过程
----------------------------------------------
火鸟
作者:
男 badwood (badwood) ★☆☆☆☆ -
盒子活跃会员
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,我将目录名故意填错,返回的结果和上面也一模一样。
----------------------------------------------
-
作者:
男 crystalmoon (crystalmoon) ★☆☆☆☆ -
盒子活跃会员
2017/12/26 9:55:30
6楼: 这个本来就不是完美的,mmseg的结果也是有一点问题的。
此帖子包含附件:
PNG 图像
大小:8.6K
----------------------------------------------
-
作者:
男 badwood (badwood) ★☆☆☆☆ -
盒子活跃会员
2017/12/26 11:28:26
7楼: @crystalmoon
你的mmseg是DELPHI接口吗?能否提供
----------------------------------------------
-
作者:
男 badwood (badwood) ★☆☆☆☆ -
盒子活跃会员
2017/12/26 13:21:51
8楼: @wac1104

问题已解决,XE6下,接口的一些数据类型需要修改。
然后之前没有使用nextword这个函数。

谢谢你的提供的接口。
----------------------------------------------
-
作者:
男 edwinyeah (Edwin) ★☆☆☆☆ -
盒子活跃会员
2017/12/27 14:50:44
9楼: 这个火鸟大侠提供的接口在哪里可以下载?谢谢。
----------------------------------------------
-
作者:
男 edwinyeah (Edwin) ★☆☆☆☆ -
盒子活跃会员
2017/12/27 15:04:07
10楼: 我用武稀松大侠的版本,用你上面的代码测试了一下,结果跟你的一模一样。
----------------------------------------------
-
作者:
男 wac1104 (火鸟) ★☆☆☆☆ -
普通会员
2017/12/27 15:21:40
11楼: 我用得就是武稀松得,调用得scws 库 只不过武稀松得我没找到dll 后来我下载scws 自己加了个dll导出 编译了一下打包起来了
----------------------------------------------
火鸟
作者:
男 badwood (badwood) ★☆☆☆☆ -
盒子活跃会员
2017/12/27 17:44:50
12楼: 这里有火鸟大大SCWS的包,在XE下把string都改为 rawbytestring就可以了。
此帖子包含附件:badwood_20171227174449.rar 大小:4.59M
----------------------------------------------
-
作者:
男 edwinyeah (Edwin) ★☆☆☆☆ -
盒子活跃会员
2017/12/27 22:05:45
13楼: 谢谢楼上。

有个新思路,不知道哪位大侠有兴趣:把cppjieba分词的C语言API(即dll),做个Delphi的接口就好。

在这:https://github.com/yanyiwu/cjieba


我没怎么研究,不过听说很多人用。
----------------------------------------------
-
作者:
男 badwood (badwood) ★☆☆☆☆ -
盒子活跃会员
2017/12/28 11:12:05
14楼: 同求cjiaba的DLL接口
----------------------------------------------
-
作者:
男 wac1104 (火鸟) ★☆☆☆☆ -
普通会员
2017/12/28 12:15:30
15楼: 封装应应该相对简单,参考python代码,我之前就是参考python代码封装得webdriver4D的,自己多动动手没坏处。
----------------------------------------------
火鸟
作者:
男 badwood (badwood) ★☆☆☆☆ -
盒子活跃会员
2017/12/28 12:45:56
16楼: ……作为一个只用过DELPHI的极其业余的编程爱好者,难度有点大。
----------------------------------------------
-
作者:
男 crystalmoon (crystalmoon) ★☆☆☆☆ -
盒子活跃会员
2017/12/28 13:56:09
17楼: @ badwood 
不是的,没有Delphi的接口,我是看网上的用这个算法的人比较多。上面的图是其它软件里的,我试着编译了一个C的Dll,把按它格式写Delphi接口,没有成功(传入的字符串会有莫名奇妙的乱码,结果的length数值也不对。),附上半成品,有兴趣,你可以继续研究。
此帖子包含附件:crystalmoon_2017122813568.rar 大小:4.43M
----------------------------------------------
-
作者:
男 badwood (badwood) ★☆☆☆☆ -
盒子活跃会员
2018/1/18 19:26:54
18楼: 经过一段时间对SWCS的DLL测试,这个没法实际应用,经常在分词时出现 Stack Overflow 错误。
----------------------------------------------
-
作者:
男 badwood (badwood) ★☆☆☆☆ -
盒子活跃会员
2018/1/18 19:43:14
19楼: 测试后发现,上述stack overflow 出现在 文本含有 “人大” 一词的情况下,也不知道还有多少这种特殊词
----------------------------------------------
-
作者:
男 letianwuji (大器晚成) ▲▲▲▲▲ -
普通会员
2018/1/19 17:34:33
20楼: C# 用盘古分词;
dll的话,用——NLPIR.dll或ICTCLAS50.dll....
----------------------------------------------
相信自己,若自己都不相信,那还有谁可信。
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行355.4688毫秒 RSS