0

我想知道在一个单词中找到两个单词的最佳实践。

例如,如果我想拆分“Stackoverflow”,它应该会发现“Stack”是一个词,而“Overflow”是另一个词。我怎么能按逻辑做到这一点?我用 PHP 和 C# 都编程,所以如果你已经有一个做同样事情的代码片段,请分享它。

你也可以给个提示,我应该怎么做。

我不想有一个不同单词的库,无论如何它应该找到它。

另一个例子是“Googleplex”=>“Google”+“Plex”。

提前致谢!:)

最好的问候,米凯尔

4

3 回答 3

2

没有关于自然语言的逻辑。除非您可以依赖“标记”,例如驼峰式(“StackOverflow” - 每个大写字母表示一个新单词的开头),否则您将不得不使用包含自然语言知识的库/字典(在这种情况下为英语) )。

于 2013-10-20T17:09:46.253 回答
1

你可能已经这样做了,但如果你还没有这样做,那么有很多努力已经发表、写在博客上,或者对你感兴趣的事情感兴趣。这里有几个链接:

SO - 算法
SO - Python subwords
Java - subwordfinder我知道 Java 不是您列出的标准,但本页引用的算法可能会回答您的问题
Java - KPM 算法
VITERBI ALGORITHM - 关于子词单元的论文 (重理论,轻技术)

它们的共同点是使用某种形式的外部引用规则集,即字典或类似规则。希望这可以帮助。

于 2013-10-21T00:19:24.823 回答
0

如果没有字典库,这显然是不可能的。

假设你有一个词.. forAmerica.. 程序理解for为关键字,但不是真正的词您需要使用字典或 hashmaps/arraylists 对其进行教育

于 2013-10-20T17:09:07.933 回答