Weka API:使用 StringToWordVector 创建 TDM
Weka API: Creating a TDM using StringToWordVector
我有以下代码:
ArrayList<Attribute> attributes = new ArrayList<>()
attributes.add(new Attribute("tweet", true))
ArrayList<String> theLines = new ArrayList<>()
File cleanestTweets = new File("cleanestTweets.txt")
File savedResults = new File("savedResults.arff")
Instances instances
try {
Scanner console = new Scanner(cleanestTweets)
while (console.hasNextLine()) {
String line = console.nextLine()
theLines.add(theLine)
}
Instance ins = new DenseInstance(1)
instances = new Instances("TwitterData", attributes, theLines.size())
theLines.each { it ->
ins.setValue(attributes[0], it)
instances.add(ins)
}
StringToWordVector filter = new StringToWordVector()
filter.setInputFormat(instances)
filter.setOutputWordCounts(true)
filter.setTFTransform(true)
filter.setDictionaryFileToSaveTo(savedResults)
filter.getDictionaryFileToSaveTo()
} catch (IOException e) {
}
创建实例的代码工作正常。然后我试图创建一个 TDM 并将其写到 savedResults.txt。当 运行 代码时,没有任何内容写入 savedResults.txt。我不完全确定为什么。我已经阅读了 documentation 但它没有提及任何内容。
StringToWordVector filter = new StringToWordVector()
filter.setInputFormat(instances)
filter.setDictionaryFileToSaveTo(savedResults)
filter.setOutputWordCounts(true)
filter.setTFTransform(true)
Instances dataFiltered = weka.filters.Filter.useFilter(instances, filter)
这确实会把单词及其出现的地方写到文件中。看起来您必须创建新实例并明确说明要使用过滤器。我用this question得出这个结论。
我有以下代码:
ArrayList<Attribute> attributes = new ArrayList<>()
attributes.add(new Attribute("tweet", true))
ArrayList<String> theLines = new ArrayList<>()
File cleanestTweets = new File("cleanestTweets.txt")
File savedResults = new File("savedResults.arff")
Instances instances
try {
Scanner console = new Scanner(cleanestTweets)
while (console.hasNextLine()) {
String line = console.nextLine()
theLines.add(theLine)
}
Instance ins = new DenseInstance(1)
instances = new Instances("TwitterData", attributes, theLines.size())
theLines.each { it ->
ins.setValue(attributes[0], it)
instances.add(ins)
}
StringToWordVector filter = new StringToWordVector()
filter.setInputFormat(instances)
filter.setOutputWordCounts(true)
filter.setTFTransform(true)
filter.setDictionaryFileToSaveTo(savedResults)
filter.getDictionaryFileToSaveTo()
} catch (IOException e) {
}
创建实例的代码工作正常。然后我试图创建一个 TDM 并将其写到 savedResults.txt。当 运行 代码时,没有任何内容写入 savedResults.txt。我不完全确定为什么。我已经阅读了 documentation 但它没有提及任何内容。
StringToWordVector filter = new StringToWordVector()
filter.setInputFormat(instances)
filter.setDictionaryFileToSaveTo(savedResults)
filter.setOutputWordCounts(true)
filter.setTFTransform(true)
Instances dataFiltered = weka.filters.Filter.useFilter(instances, filter)
这确实会把单词及其出现的地方写到文件中。看起来您必须创建新实例并明确说明要使用过滤器。我用this question得出这个结论。