10

I am creating an application in .NET.

I got a running application name http://www.spinnerchief.com/. It did what I needed it to do but but I did not get any help from Google. I need functional results for my application, where users can give one sentence and then the user can get the same sentence, but have it worded differently.

Here is an example of want I want.

Suppose I put a sentence that is "Pankaj is a good man." The output should be similar to the following one:

Pankaj is a great person.
Pankaj is a superb man.
Pankaj is a acceptable guy.
Pankaj is a wonderful dude.
Pankaj is a superb male.
Pankaj is a good human.
Pankaj is a splendid gentleman

4

3 回答 3

7

要对任意句子正确执行此操作,您需要对源句子执行自然语言分析。您可能想查看SharpNLP 库——它是一个免费的 C#/.NET 自然语言处理工具库。

如果您正在寻找一种更简单的方法,则必须愿意在某种程度上牺牲正确性。例如,您可以创建一个触发词词典,当它们出现在句子中时,它会被同义词库中的同义词替换。这种方法的问题是确保您用等效的词性替换单词。在英语中,根据句子中的上下文用法,某些词可能是不同的词性(动词、形容词、副词等)。

您需要解决的另一个考虑因素(如果您不使用 NLP 库)是词干提取。在大多数语言中,某些词类是根据它们所适用的主题(或句子的宾语、说话者或时态)进行共轭/修饰的(英语中的动词)。

如果您只想替换形容词(如您的示例中),则使用触发词的方法可能会起作用-但它不容易扩展。在你做任何事情之前,我建议你清楚地定义你的问题域的要求和规则......并用它来决定采取哪条路线。

于 2010-09-21T15:01:45.420 回答
3

为此,您最好使用 WordNet,它是下位词/上位词关系。有一个WordNet .Net库。对于您想要替换的每个单词,您可以得到它的上位词(即对于人,上位词的意思是“人是一种……”)或下位词(“X 是一种人”)。然后只需替换您正在交替的单词。

你需要确保你有正确的词性(即名词、形容词、动词......),还有感觉问题,这可能会引入一些不受欢迎的交替(感觉 #1 是最常见的) .

于 2010-09-21T15:02:54.437 回答
-3

我对.Net一无所知,但是您应该考虑使用字典函数(我确定有一个,或者至少有一个库可以简化流程,如果没有的话)。

然后,您必须遍历字符串,并省略诸如“is”或“a”之类的词。只取你想要有同义词的词。

在此之后,让循环吐出你的句子非常简单。

祝你好运。

于 2010-09-21T15:00:02.770 回答