我无法想到一个合适的问句,所以让我解释一下我在这里要做什么。
我正在运行一个项目,用户将在我的程序/临时内存中输入句子。然后它会扫描单词,然后它会将单词(可以是任何东西)传递给变量 - 让我们把它称为myWord。
同时,该单词将扫描我的数组(数据库)以查找其同义词。然后将从我的数组列表中随机选择该同义词,然后将其分配给myWord。 myWord将覆盖最初输入的句子并输出新句子。
最后,我如何编码使我的软件扫描包含同义词的句子(我不会将所有单词更改为其同义词,只是某些单词 - 可以自己编码)并选择其同义词(重写原始单词)阵列
非常感谢任何想法,算法,方法或库。 谢谢。
答案 0 :(得分:1)
如果您使用的是c ++ 11,那么您可以使用的是所有同义词的无序字词映射:
#include <unordered_map>
#include <vector>
unordered_map<string, vector<string>> makeSynonyms() {
unordered_map<string, vector<string>> synonyms;
// load up your synonyms
synomyms["happy"] = {"cheerful", "pleased", "delighted"};
synomyms["cheerful"] = {"happy", "pleased", "delighted"};
synonyms["pleased"] = {"happy", "cheerful", "delighted"};
return synonyms;
}
现在要使用它,您可以从同义词映射中为输入中的每个单词选择一个随机同义词。
unordered_map<string, vector<string>> synonyms = makeSynonyms();
string myWord = "happy";
vector<string> wordSynonyms = synonyms[myWord]; // this gets a list of synonyms
// now you can get a random element from the list