我正在用C#为一个uni项目创建一个聊天机器人,我目前不确定如何最好地去做它。我是OO编程和C#的新手。
聊天机器人必须工作的基础是它要学习,它与用户交互的次数越多。它通过解析所有用户输入句子并计算某个单词跟随每个单词的次数来实现这一点。
程序从句子中取一个随机单词并使用单词图来生成答复。
因此,例如,以下引用可以分为:
“我寂寞地徘徊在云层中,漂浮在高高的矿石山谷和山丘上,当我看到人群中有许多金黄色的水仙花时”
我:徘徊(1)看了(1)
徘徊:孤独(1)
孤独:为(1)
as: a(1)
a:云(1)人群(1)主持人(1)
云:那(1)
等...
到目前为止,我有一个想法是使用一个followWord类,它包含一个跟随单词和一个跟随主词的次数。
MainWord类包含单词和FollowWord类型的列表,其中包含以下单词及其计数。
class FollowingWord
{
string word; //the following word
int count; //the amount of times word has followed the main word.
}
class MainWord
{
string word; //the main word
List<FollowWord> following = new List<FollowWord>(); //a list of type FollowWord which holds all the following words and their counts.
}
我在这里走在正确的轨道上吗?因为我还没有想到任何其他方法来解决这个问题。
答案 0 :(得分:0)
我知道这个问题是4岁,你可能已经完成大学了。
这个主题是自然语言处理,有一系列来自斯坦福的视频,它有很多你想要的理论。
我确实看过它们,并且有一种方法可以判断一个单词在前一个单词中的可能性。这就是在手机上打字时建议的单词的工作方式。