我已经决定为我的最后一年项目开发一个(Unicode)拼写检查器,用于一种南亚语言。我想把它开发成一个插件或者web服务。但是我需要为它决定一个合适的开发平台。(这不仅仅是检查字典文件,还将使用形态分析/生成模块(词干分析器))。
java script能够在公平的响应时间内处理这样的处理吗?
我能在客户端处理一个大字典吗?
你还有什么更好的建议吗?
发布于 2012-06-22 19:17:47
Javascript不能胜任这项任务,至少它本身不能胜任;它的Unicode支持太原始了,而且在很多方面实际上还没有。例如,Javascript不支持Unicode字素集群。
如果您使用Java语言,那么一定要使用the ICU libraries,这样您就可以获得文本分割所需的所有whizbang Unicode属性。Java原生Unicode处理失败的地方在它的regex库中,这就是为什么Android JNI转到ICU C/C++ regex库。有很多为Java编写的NLP工具,您可能会发现其中一些很方便。据我所知,其中大多数是针对英语的,至少是针对西方语言的。
如果您愿意通过CGI运行部分计算服务器端,而不仅仅是客户端操作,那么您将不再受语言选择的约束。例如,您可以将客户端上的Javascript与服务器上的Perl结合起来,Perl对Unicode的支持甚至比Java的还要好。如何将两者结合在一起,以及如何获得所需的性能和行为,这取决于您实际想要做什么。
Perl还有许多广泛可用的行业标准NLP模块,其中大多数已经知道使用Unicode,因为像Java一样,Perl在内部使用Unicode。
关于在Perl中使用NLP工具进行某些形态分析的简短幻灯片演示文稿,即词干提取和层次化,可以在here上找到。众所周知,该演示文稿可以在Safari、Firefox或Chrome下运行,但在Opera或微软的Internet Explorer上就不太好用了。
我不知道有任何专门针对亚洲语言的工具,尽管Perl确实通过CPAN的Unicode::LineBreak模块支持UAX#11 (东亚宽度)和UAX#14 (Unicode换行),并且Perl确实通过标准Unicode::Collate模块提供了一个完全兼容的排序规则模块(实现UTS#10,Unicocde排序规则算法),还有同样标准的Unicode::Collate::Locale模块提供的区域设置支持,其中支持许多亚洲区域设置。如果您使用的是CJK语言,则可能需要访问Unihan数据库,该数据库可通过CPAN的Unicode::Unihan模块获得。更根本的是,通过内置正则引擎中的\X元字符,Perl具有对Unicode扩展字素集群的本机支持,而Java和Javascript都不提供。
所有这些都是你在Javascript中可能需要的,也是非常缺乏的东西。
https://stackoverflow.com/questions/11133616
复制相似问题