5

我试图通过分析句子来实现预测。考虑以下[相当无聊的]句子

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为 2 under Call,则 的频率Call为 2 under ABC。我该如何优化呢?

这个想法是在输入新句子时使用这些数据。例如,如果Call已经输入,从数据中,很容易说它ABC更有可能出现在句子中,并将其作为第一个建议提供,然后再和DEF

我意识到这是实现预测的一百万种可能方法中的一种,我热切期待其他方法的建议。

谢谢

4

3 回答 3

1

也许使用双向图。您可以将单词存储为节点,将边缘存储为频率。

于 2011-11-11T20:40:00.040 回答
0

您也可以使用以下数据结构:

Map<String, Map<String, Long>>
于 2011-11-11T20:44:18.463 回答
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;
}

这将允许非常快速地更新数据对。

于 2011-11-11T20:44:47.760 回答