首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用主题词表的语句生成器

使用主题词表的语句生成器
EN

Stack Overflow用户
提问于 2010-09-21 14:50:58
回答 3查看 8.9K关注 0票数 10

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

我有一个正在运行的应用程序名http://www.spinnerchief.com/。它做了我需要它做的事情,但是我没有得到谷歌的任何帮助。我需要我的应用程序的功能结果,用户可以给出一个句子,然后用户可以得到相同的句子,但它的措辞不同。

这里有一个我想要的欲望的例子。

假设我说了一句话:"Pankaj是个好人。“输出应该类似于下面的输出:

潘卡吉是个伟大的人。 潘卡吉是个了不起的人。 潘卡吉是个可以接受的人。 潘卡吉是个很棒的家伙。 潘卡吉是一位优秀的男性。 潘卡吉是个好人。 潘卡吉是位杰出的绅士。

EN

回答 3

Stack Overflow用户

发布于 2010-09-21 15:01:45

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

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

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

如果你想做的只是替换形容词(在你的例子中),那么使用触发词的方法可能会奏效--但它不会很容易扩展。在您做任何事情之前,我建议您清楚地定义问题域的要求和规则.用这个来决定走哪条路。

票数 7
EN

Stack Overflow用户

发布于 2010-09-21 15:02:54

为此,您最好使用的是WordNet,它是次词/超限关系。有一个WordNet .Net库。对于你想要替换的每一个单词,你都可以得到它的超限(也就是说,对person来说,hypernym的意思是"person是一种.“)或者助词“X是一种人”。那就把你们交替使用的单词替换一下。

你要确保你有正确的词性(即名词,形容词,动词.)还有感官的问题,它可能带来一些不想要的变化(意义#1是最常见的)。

票数 3
EN

Stack Overflow用户

发布于 2010-09-21 15:00:02

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

然后,您将需要遍历字符串,并将诸如"is“或"a”之类的单词隐藏起来。只取你想要的同义词的词。

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

祝好运。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3761519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档