【发布时间】:2014-09-24 11:13:46
【问题描述】:
我有一个列表,其中包含一些不可分割的单词,例如
List<String> lookUp = new ArrayList<>();
lookUp.add("New York");
lookUp.add("Big Apple");
对于一个句子,我想将它拆分成单词,但不要拆分我列表中给出的密不可分的单词。举个例子
String sentence = "New York is also called Big Apple";
它应该还给我
["New York", "is", "also", "called", "Big Apple"]
我开始编写一个算法,首先用空格分割句子,然后我做一个循环:对于每个单词,我检查这个单词和它的右邻是否出现在查找列表中,如果是,则一起解析这些单词.
1) 想象一下,我的查找列表还包含包含两个以上单词的密不可分的短语,例如“George W. Bush”-> 我的算法只会查找“George W”。和“W. Bush”,并且不会在查找列表中找到它,因此会将其拆分为 3 个单词。
2) 更重要的问题(您可以忽略问题 1):是否已经有库甚至 GATE 插件(这样我就不必重新发明轮子了)?德语短语也存在这种情况吗?没找到=(
【问题讨论】:
-
这是一个微不足道的问题,所以我相信:没有任何特殊的库。
-
如果你得到“a b c”并且在你的查找中有“a b”和“b c”怎么办?
-
替代方法:1) 按
lookUp条目拆分,2) 迭代,查看是否是查找词,3) 如果是,则继续,4) 如果不是,则在空格处拆分. -
您能否详细说明您的第 1 步?
-
@aioobe: 好点,我想我更愿意收到 ["a b", "c", "a", "b c"] @jensgram: "1) 按查找条目拆分"你意思是: sentence.split(lookUp.get(i)) ?!或者只是 for(phrase:lookUp){检查句子是否包含短语}