在PHP中识别时态

4
我正在寻找一种分析文本字符串并确定其所处时态的方法,例如:“我要去商店” == 现在进行时,“我买了一辆车” == 过去式等。
你有什么建议可以帮助我做到这一点吗?

2
我相信这很困难。想象所有的问题和异常情况,特别是对于英语。我跑了。我跑步。我正在跑步。 - Dirk
“我打算去商店怎么样?” - Michael Myers
6个回答

4

是的,这将非常困难...我曾经开始做类似的事情,当时认为这只是一个快速周末项目,直到我意识到这一点...不过,这里有一个我觉得很有用的资源。

从普林斯顿下载Wordnet 3.0的源代码,其中包含英语单词的数据库。文件/dict/index.verb是一个包含现在时态英语动词列表的文件,在不太困难的情况下,您应该能够将其作为CSV导入到您的数据库中。从那里开始,你就需要自己解决英语语言的怪异问题。


3
这可能是一个相当繁琐的过程。你希望得到多么详细的结果?你只想考虑过去、现在和未来吗?还是要考虑一般现在时、现在进行时、一般过去时等等?
无论如何,您还需要评估肯定形式、否定形式和疑问形式。一个非常好的在线图表可以帮助您,链接在这里:http://www.ego4u.com/en/cram-up/grammar/tenses
请注意规则和信号词。

2
从数据库/文件中标记/查找动作词(或至少猜测-例如,*th=past)/计算时态命中次数?

2

对于这样的任务,我相信正则表达式是不够的:这是一个相当困难的任务...

要么你根本得不到任何好的结果,要么你最终会得到某种超级怪物正则表达式,甚至连你自己都无法理解和维护...

这可能需要更多的东西,比如某种“语言引擎”...


1

如果你真的需要它而不是在玩耍,你可以看一下nltk。解析是一个复杂的问题。解析自然语言更加复杂。而解析高度不规则的语言,比如英语,更加困难。如果你能缩小问题范围,你就有更好的解决方案。

你需要它做什么?


0
您可以在Ian Barber的PHP/ir网站上找到PHP的基本Brill解析器实现。该算法将会标记出您的单词。
如果您输入单词"I think",结果将是:
I/NN think/VBP
NN=名词, VBP=动词现在时

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