我正在c#中做情感分析,我做了预处理,下一部分是基于词汇的分析,我发现了大约6800单词的英语词汇刘冰冰教授的词汇,其中包含两个文本文件,一个是肯定的,另一个是否定的。
我在想,我必须从这些文件中找出每个单词(感伤词),要么是肯定的,要么是负面的。但问题是,这些文件包含的单词没有任何空格,没有任何格式(意味着单个单词无法从文件中识别)。
我怎么才能在文件里找到这个词呢?或者还有什么其他的方法可以让我轻松地处理这个问题?
发布于 2015-10-16 14:54:25
该文件使用\n
作为行分隔符(与标准的\r\n
不同)。所以,只要不使用NotePad或类似的方式打开它,就可以使用WordPad来打开它。
要将该文件加载到集合中(假设它是HashSet<String>
-您可能希望测试一个单词是否在正数内),您可以使用Linq。
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)) {
...
}
实际文件的内容是
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Opinion Lexicon: Positive
...
; frequently in social media content.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
a+
abound
abounds
abundance
...
zenith
zest
zippy
发布于 2015-10-16 14:53:53
实际上,该文件每一行包含一个单词,但行尾是Unix样式,而不是Windows,因此一些编辑器(如记事本)将在一行中显示所有内容。
您可以轻松地用File.ReadAllLines
阅读单词(忽略以;
开头的行,这些是注释)。
发布于 2015-10-16 14:59:25
该文件似乎包含由行提要字符(\n
)分隔的单词,因此最简单的方法是使用File.ReadAllLines
读取文件。
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允许您查询内容,您不需要字典。
https://stackoverflow.com/questions/33173056
复制相似问题