如何改变句子前缀"我在[X]上工作",使其具有所有X的正确句子结构?

vau*_*han 7 api nlp

我希望用户能够输入一个任务,我会正确地添加前缀,使其具有正确的句子结构.

例如

I am working on [making the world a better place]
Run Code Online (Sandbox Code Playgroud)

...听起来不错.

I am working on [discuss draft proposal]
Run Code Online (Sandbox Code Playgroud)

......听起来不太好.在这种情况下,它希望程序响应类似于:

I am discussing a draft proposal
Run Code Online (Sandbox Code Playgroud)

基本上人们写任务或待命的方式似乎是必要的(例如拿起牛奶,写论文等)或仅仅是名词(例如作业1,客户会议等).我想将这些转换为现在进行时.

我目前正在研究自然语言处理领域,但我想知道是否有某种API可以满足我的需求,或者是否有人遇到类似问题的经验.

小智 2

除了自然语言处理之外,您还询问自然语言生成: http: //en.wikipedia.org/wiki/Natural_language_ Generation

您可以尝试使用解析器(例如斯坦福解析器)来找出您手头有哪一种短语,并识别主要动词(如果有)。为此,您可能会求助于词性标注器。在英语中,您还需要识别“帮助”动词(在技术文章中称为“助动词”),例如“will”、“may”、“can”等,这些动词通常出现在动词之前,因为它们可以改变时态以及。

如果这只是一个名词短语,“我正在研究 X”可能听起来不错。如果它是一个名义上的(如果斯坦福解析器只为您提供 NN,而在顶部 NP 内没有任何 NP 或 NNP 或 DET),那么附上一篇文章可能听起来更好。例如“胡椒项目”->“我正在研究胡椒项目”。你不会对“Pepper's project”或者它已经是“thepepperproject”或者大多数专有名词这样做。但总有一些棘手的情况。

如果它是一个动词短语:如果它已经是进行体了,那就太好了。别的:

使用词形还原器(或依靠词干分析器)来获取主要动词的词根形式。
将这个词根形式扩展为现在进行时。为此,根据引理是否以元音或双辅音结尾,可能一些启发式就足够了。例如“walk”->“walking”,“run”->“running”(双n),“fly”->“flying”(y 在这种情况下不像元音),“glide”-> “gliding”(去掉辅音后的最后一个 e),但“flee”->“fleeing”(不在元音后)。寻找规律和例外的最全面的地方是英语综合语法或类似的在线资源。用于此目的的工具包括morphgMorphAdorner

最后,删除所有辅助动词并用现在进行时形式代替主要动词。虽然这并不完美,但它可能看起来比大多数都更聪明。

如果它是一个完整的子句(也有主语的类似句子的东西)或一个问题,或其他一些更大的东西,你可能会逃避并只使用通用前缀,例如“现在:Jenn 回到我身边了吗?” “现在:我必须出发了!”

我不是专家,所以我可能错过了一些已经存在的此类工具,如果是这样,我希望向其他人学习。这不是一件容易的事情,但听起来非常有用。总会有错误,它们可能会让你的用户感到不舒服,或者他们可能会发现这些奇怪的东西很可爱。如果你把一些东西放在一起,你会在这里发布 API 吗?