发布
社区首页 >问答首页 >如何在c#中使用词典

如何在c#中使用词典
EN

Stack Overflow用户
提问于 2015-10-16 14:33:46
回答 3查看 1.1K关注 0票数 2

我正在c#中做情感分析,我做了预处理,下一部分是基于词汇的分析,我发现了大约6800单词的英语词汇刘冰冰教授的词汇,其中包含两个文本文件,一个是肯定的,另一个是否定的。

我在想,我必须从这些文件中找出每个单词(感伤词),要么是肯定的,要么是负面的。但问题是,这些文件包含的单词没有任何空格,没有任何格式(意味着单个单词无法从文件中识别)。

我怎么才能在文件里找到这个词呢?或者还有什么其他的方法可以让我轻松地处理这个问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-10-16 14:54:25

该文件使用\n作为行分隔符(与标准的\r\n不同)。所以,只要不使用NotePad或类似的方式打开它,就可以使用WordPad来打开它。

要将该文件加载到集合中(假设它是HashSet<String> -您可能希望测试一个单词是否在正数内),您可以使用Linq。

代码语言:javascript
代码运行次数:0
复制
  HashSet<String> positives = new HashSet<String>(File
    .ReadLines(@"C:\positive-words.txt")
    .Where(item => !String.isNullOrEmpty(item) && !item.StartsWith(";")));

  ....

  String testWord = ...

  if (positives.Contains(testWord)) {
    ...
  }

实际文件的内容是

代码语言:javascript
代码运行次数:0
复制
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 
; Opinion Lexicon: Positive
...
;       frequently in social media content. 
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

a+
abound
abounds
abundance
...
zenith
zest
zippy
票数 1
EN

Stack Overflow用户

发布于 2015-10-16 14:53:53

实际上,该文件每一行包含一个单词,但行尾是Unix样式,而不是Windows,因此一些编辑器(如记事本)将在一行中显示所有内容。

您可以轻松地用File.ReadAllLines阅读单词(忽略以;开头的行,这些是注释)。

票数 1
EN

Stack Overflow用户

发布于 2015-10-16 14:59:25

该文件似乎包含由行提要字符(\n)分隔的单词,因此最简单的方法是使用File.ReadAllLines读取文件。

代码语言:javascript
代码运行次数:0
复制
var fileContents = File.ReadAllLines("negative-words.txt");
var words = new HashSet<string>(fileContents.SkipWhile(x => x.StartsWith(";") || x == String.Empty));

var containsWord = words.Contains("2-faced"); // The first valid word...

将内容放入HashSet允许您查询内容,您不需要字典。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33173056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档