2012-02-06 69 views
-1

我应该在Java中使用哪种数据结构来存储其句子中每个单词的词频以及它在另一个句子中的频率,即成对。每个节点必须有两个自己的频率和一个相邻的句子。对于文档中的每一对句子都必须重复这一点。它用它稍后找出标准余弦相似度。在Java中使用的数据结构

+2

作业吗? – Nishant 2012-02-06 10:18:16

+0

“邻居句子”是什么意思?这是否意味着左边和右边的一句话?或者它意味着比现在的其他任何陈述? – Apurv 2012-02-06 10:40:33

+0

它意味着比现在的每一个其他的陈述! – user1080383 2012-02-06 10:59:37

回答

1

这是怎样的一个链表:

public class SentenceOccurencies { 
    // Key is the word, Value the count 
    public Map<String, Integer> occurrencies = new HashMap<String Integer>(); 
    public SentenceOccurrencies neighbour; 
} 

随意添加访问器/增变等。

0

倒排索引是信息检索技术的最佳存储。所以你有一个从单词到地图的地图,以及多少次。

因此,对于两句话:

敏捷的棕色狐狸跳过了懒狗。 当狐狸跳起来时,懒狗睡了。

变为:

brown -> {1:1} 
dog -> {1:1, 2:1} 
fox -> {1:1, 2:1} 
jumped -> {1:1, 2:1} 
lazy -> {1:1, 2:1} 
over -> {1:1} 
quick -> {1:1} 
slept -> {2:1} 
the -> {1:2, 2:2} 
while -> {2:1} 

然后你可以随便去通过地图和提取所需的信息。这种结构的好处在于,您可以高效地存储多于两个句子!

+0

谢谢!请你详细说明代码或数据结构。而且,在这之后,我如何找到这两句话的标准余弦相似? – user1080383 2012-02-06 11:02:27

+2

我真的认为你应该尝试自己实现这一点,否则你什么都不会学。我已经给了你足够的信息来开始 - 如果你发现你已经做了什么。 – Robert 2012-02-06 11:06:56