我正试图通过分析句子来实现预测。考虑以下[相当无聊的]句子
Call ABC
Call ABC again
Call DEF
我希望上述句子的数据结构如下:
Call: (ABC, 2), (again, 1), (DEF, 1)
ABC: (Call, 2), (again, 1)
again: (Call, 1), (ABC, 1)
DEF: (Call, 1)
一般来说,Word: (Word_it_appears_with, Frequency), ....
请注意此类数据的固有冗余。显然,如果ABC
下Call
的频率为2,则Call
的{{1}}频率为ABC
。我该如何优化它?
这个想法是在输入新句子时使用这些数据。例如,如果已输入Call
,则很容易说ABC
更有可能出现在句子中,并将其作为第一个建议提供,然后再次和{{ 1}}。
我意识到这是实现预测的一百万种可能方式之一,我热切期待其他方法的建议。
由于
答案 0 :(得分:1)
也许使用双向图。您可以将单词存储为节点,边缘为频率。
答案 1 :(得分:0)
您也可以使用以下数据结构:
Map<String, Map<String, Long>>
答案 2 :(得分:0)
我会考虑两种选择之一:
选项1:
class Freq {
String otherWord;
int freq;
}
Multimap<String, Freq> mymap;
或者表格
Table<String, String, int>
鉴于以上Freq:您可能想要进行双向映射:
class Freq{
String thisWord;
int otherFreq;
Freq otherWord;
}
这样可以非常快速地更新数据对。