加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Bag of Words表示问题

发布时间:2020-12-16 01:34:44 所属栏目:百科 来源:网络整理
导读:基本上我有一个字典,其中包含我的词汇表中的所有单词作为键,并且所有单词都以0作为值. 为了将文档处理成一个单词表示,我习惯用适当的IEqualityComparer复制该字典,并简单地检查字典是否包含文档中的每个单词并递增它的密钥. 为了获得单词表示的数组,我只使用
基本上我有一个字典,其中包含我的词汇表中的所有单词作为键,并且所有单词都以0作为值.

为了将文档处理成一个单词表示,我习惯用适当的IEqualityComparer复制该字典,并简单地检查字典是否包含文档中的每个单词并递增它的密钥.

为了获得单词表示的数组,我只使用了ToArray方法.

这似乎工作正常,但我只是被告知字典不保证相同的键顺序,因此结果数组可能代表不同顺序的单词,使其无用.

我目前解决此问题的想法是将单词字典的所有键复制到ArrayList中,创建适当大小的数组,然后使用数组列表的indexOf方法填充数组.

所以我的问题是,有没有更好的方法来解决这个问题,我看起来有点粗糙…而且由于IEqualityComparer,我不会有问题吗?

解决方法

让我看看我是否理解这个问题.您有两个文档D1和D2,每个文档包含从已知词汇表{W1,W2 … Wn}中提取的单词序列.您希望获得两个映射,指示每个文档中每个单词的出现次数.所以对于D1,你可能会有

W1 --> 0
W2 --> 1
W3 --> 4

表明D1可能是“W3 W2 W3 W3 W3”.也许D2是“W2 W1 W2”,所以它的映射是

W1 --> 1
W2 --> 2
W3 --> 0

您希望同时采用两个映射并确定向量[0,1,4]和[1,2,0],然后计算这些向量之间的角度,作为确定两个文档有多相似或不同的方法.

您的问题是字典不保证按任何特定顺序枚举键/值对.

好的,所以订购它们.

vector1 = (from pair in map1 orderby pair.Key select pair.Value).ToArray();
vector2 = (from pair in map2 orderby pair.Key select pair.Value).ToArray();

你完成了

这会解决您的问题,还是我误解了这种情况?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读