用同义词词库生成句子

10

我正在使用.NET创建一个应用程序。

我找到了一个名为http://www.spinnerchief.com/的运行中应用程序,它能够满足我的需求,但是谷歌并没有给我提供帮助。 我需要为我的应用程序获得功能结果,其中用户可以输入一句话,然后用户可以得到相同的句子,但是用不同的措辞表达。

以下是我想要的一个例子。

假设我放入一句话“Pankaj是一个好人。” 那么输出应该类似于下面这个例子:

Pankaj是一个伟大的人。
Pankaj是一个超棒的人。
Pankaj是一个可以接受的家伙。
Pankaj是一个美妙的家伙。
Pankaj是一个绝佳的男性。
Pankaj是一个好人。
Pankaj是一个出色的绅士。


1
+1 是个聪明的方法,让谷歌认为你非常酷,当你下次搜索自己的时候! - Daren Thomas
3个回答

7
要正确地处理任意句子,您需要对源句子进行自然语言分析。您可以查看SharpNLP库——这是一个免费的C#/.NET自然语言处理工具库。
如果您正在寻找更简单的方法,那么您必须愿意在一定程度上牺牲正确性。例如,您可以创建一个触发词典,当它们出现在一个句子中时,被替换成同义词。这种方法的问题在于确保您将一个单词替换成等效的词性。在英语中,某些单词根据其在句子中的上下文使用方式可能是不同的词性(动词、形容词、副词等)。
另一个需要考虑的问题(如果您没有使用NLP库)是提取词干。在大多数语言中,根据它们所适用的主题(或句子的对象、说话者或时态),某些词性会发生变化/修改(如英语中的动词)。
如果您只想替换形容词(就像您的例子一样),那么使用触发词的方法可能有效,但它不会很容易扩展。在您开始做任何事情之前,我建议您明确定义您问题域的要求和规则...并根据这些决定采取哪条路线。

3

对于这个问题,你最好使用WordNet以及它的下位词/上位词关系。有一个WordNet .Net库可用。对于每个你想替换的单词,你可以获取它的上位词(例如,对于人,上位词表示“人是一种...”)或下位词(“X是一种人”)。然后只需替换你要交替的单词即可。

你需要确保你有正确的词性(名词、形容词、动词...),还有可能会出现意义上的问题,这可能会导致一些不想要的交替(第1个意义是最常见的)。


-3
我对 .Net 一无所知,但您应该研究使用字典函数(我确信有一个,或者至少有一个库可以简化此过程)。
然后,您必须浏览字符串,并省略诸如“是”或“一个”之类的单词,仅考虑您想要得到同义词的单词。
完成这些步骤后,循环输出您的句子就非常简单了。
祝你好运。

1
字典函数是什么意思? - Joshua Drake

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