将一个句子分割成单独的单词

14

我需要将一个中文句子分成单独的词。中文的问题在于没有空格。例如,句子可能如下所示:主楼怎么走(如果有空格,它应该是:主楼 怎么 走)。

目前我能想到的解决方案是:我有一个包含中文词汇的字典(存在数据库中)。脚本将会:

  1. 尝试在数据库中查找句子的前两个字符(主楼),

  2. 如果主楼实际上是一个单词并且在数据库中,则脚本将尝试查找前三个字符(主楼怎)。主楼怎不是一个词,因此它不在数据库中=> 我的应用现在知道主楼是一个单独的词。

  3. 尝试对剩余的字符进行同样的操作。

我并不太喜欢这种方法,因为即使分析一个小文本,它也会查询数据库太多次。

还有其他解决方案吗?


只是好奇,如果中文没有空格,为什么需要-可能-用空格来显示?这里的用例是什么?嗯-抱歉,再读一遍问题,显然是某些单词字典查找,不要紧。 - Wim
补充一下Wim所说的,如果只是为了换行的目的,那就不必费心了:据我所知,你可以在任何字符处换行。 - C. K. Young
该应用程序需要找到单独的词语并提供它们的拼音(中文转录)。 - Peterim
你是每输入一个字母就查询数据库吗?还是只在单词的第一个字母查询? - Kevin
1
如果前两个字符是单词,第一个三个字符也都是单词,而第三个字符则是一个单独的单词,你怎么知道该使用哪一个? - sprugman
好的,它不必完美,实际上它不能完美,这是机器翻译,不是人类 =) - Peterim
11个回答

-3
你可以构建非常非常长的正则表达式。
编辑:我的意思是使用脚本从数据库中自动构建它,而不是手写。

你认为一个用于过滤完整字典的正则表达式会是什么样子? - Younes
1
@Younes: 非常非常长?...而且丑陋。 - blank
@Eineki:编译后,大多数正则表达式的实现将构建一种类似于 Trie 自动机的数据结构,就像 Vincent Ramdhanie 建议的那样。 - Yaakov Shoham
@Bedwyr:这就是我想表达的意思 ;) - Younes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接