我想知道在一个单词中找到两个单词的最佳做法。
例如,如果我想拆分“Stackoverflow”,它应该发现“Stack”是一个单词而“Overflow”是另一个单词。我怎么能通过逻辑来做到这一点?我用PHP和C#进行编程,所以如果你已经有一个同样的代码片段,请分享它。
你也可以给我一个提示,我应该怎么做。
我不希望有一个不同单词的图书馆,无论如何都应该找到它。
另一个例子是“Googleplex”=> “Google”+“Plex”。
提前致谢! :)
祝你好运, 的Mikael
答案 0 :(得分:2)
关于自然语言没有逻辑。除非您可以依赖“标记”,例如驼峰大小写(“StackOverflow” - 每个大写字母表示新单词的开头),否则您将不得不使用包含自然语言知识的库/词典(在这种情况下为英语) )。
答案 1 :(得分:1)
你可能已经这样做过了,但是如果你没有这样做,那么就会有很多努力发表,写博客,并且对你所做的事情感兴趣。以下是一些链接:
<强> SO - algorithms 强>
的 SO - Python subwords 强>
Java - subwordfinder 我知道Java不是您列出的标准,但此页面上引用的算法可能会回答您的问题
的 Java - KPM algorithm 强>
VITERBI ALGORITHM - Paper on subword unit (沉重的理论,关注技术)
每个人的共同点是使用某种形式的外部引用的规则集,即字典或类似的。希望这可以帮助。
答案 2 :(得分:0)
如果没有字典库,这显然只是 不可能。
说你有一个单词.. forAmerica ..程序将for
理解为关键字,但不是的真实单词。您需要使用词典或哈希映射/ arraylists来教育它