- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一些代码可以给我一个单词列表以及它们在文本中出现的频率,我正在寻找它以便代码自动将前 10 个单词转换为 ARFF
@RELATION 词频
@ATTRIBUTE 字串@ATTRIBUTE 频率数字
前 10 名作为数据及其频率。
我正在为如何使用我当前的代码执行此操作而苦苦挣扎
import re
import nltk
# Quran subset
filename = 'subsetQuran.txt'
# create list of lower case words
word_list = re.split('\s+', file(filename).read().lower())
print 'Words in text:', len(word_list)
word_list2 = [w.strip() for w in word_list if w.strip() not in nltk.corpus.stopwords.words('english')]
# create dictionary of word:frequency pairs
freq_dic = {}
# punctuation and numbers to be removed
punctuation = re.compile(r'[-.?!,":;()|0-9]')
for word in word_list2:
# remove punctuation marks
word = punctuation.sub("", word)
# form dictionary
try:
freq_dic[word] += 1
except:
freq_dic[word] = 1
print '-'*30
print "sorted by highest frequency first:"
# create list of (val, key) tuple pairs
freq_list2 = [(val, key) for key, val in freq_dic.items()]
# sort by val or frequency
freq_list2.sort(reverse=True)
freq_list3 = list(freq_list2)
# display result
for freq, word in freq_list2:
print word, freq
f = open("wordfreq.txt", "w")
f.write( str(freq_list3) )
f.close()
感谢任何对此的帮助,这样做的方式真的让我绞尽脑汁!
最佳答案
我希望你不介意轻微的重写:
import re
import nltk
from collections import defaultdict
# Quran subset
filename = 'subsetQuran.txt'
# create list of lower case words
word_list = open(filename).read().lower().split()
print 'Words in text:', len(word_list)
# remove stopwords
word_list = [w for w in word_list if w not in nltk.corpus.stopwords.words('english')]
# create dictionary of word:frequency pairs
freq_dic = defaultdict(int)
# punctuation and numbers to be removed
punctuation = re.compile(r'[-.?!,":;()|0-9]')
for word in word_list:
# remove punctuation marks
word = punctuation.sub("", word)
# increment count for word
freq_dic[word] += 1
print '-' * 30
print "sorted by highest frequency first:"
# create list of (frequency, word) tuple pairs
freq_list = [(freq, word) for word, freq in freq_dic.items()]
# sort by descending frequency
freq_list.sort(reverse=True)
# display result
for freq, word in freq_list:
print word, freq
# write ARFF file for 10 most common words
f = open("wordfreq.txt", "w")
f.write("@RELATION wordfrequencies\n")
f.write("@ATTRIBUTE word string\n")
f.write("@ATTRIBUTE frequency numeric\n")
f.write("@DATA\n")
for freq, word in freq_list[ : 10]:
f.write("'%s',%d\n" % (word, freq))
f.close()
关于python - 从词频创建 ARFF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5500482/
为什么有人会使用 arff?请给出读取arff文件并在java中使用它的示例代码。 我在 weka 站点中找到了以下代码片段: BufferedReader reader = new Buffered
我能够使用以下命令加载 .arff 文件。但我无法从对象中提取数据并将对象转换为数据帧格式。我需要这个来在此数据帧上应用机器学习算法。 命令:- import arff dataset = pd.Da
我正在尝试从https://cometa.ujaen.es/下载arff数据集(例如 https://cometa.ujaen.es/datasets/yahoo_arts )并使用 scipy.ar
我想在 python 中加载一个 ARFF 文件,然后更改它的一些值,然后将更改保存到文件中。我正在使用 LIAC-ARFF 包 ( https://pypi.python.org/pypi/liac
我想在 scikit-learn 中处理相当大的 ARFF 文件。这些文件位于 zip 存档中,我不想在处理之前将存档解压到文件夹中。因此,我使用Python 3.6的zipfile模块: from
我正在尝试获取一组评论,并将它们转换为 ARFF 格式以便与 WEKA 一起使用。不幸的是,要么我完全误解了格式的工作原理,要么我必须为所有可能的单词提供一个属性,然后是一个存在指示符。有谁知道更好的
所以,我一直在使用本教程 https://weka.wikispaces.com/Text+categorization+with+WEKA 中的示例“TextCategorizationTest.j
如何使用 Java 在 WEKA ARFF 文件中添加类属性? 特别是,我的 ARFF 结构(根据所述 here )应该是: @attribute text string @attribute cla
我有一个从 liac-weka 包生成的 ARFF 文件。 % Finger-tapped_dataset @RELATION Feature_onsets @ATTRIBUTE f
我在 Linux 中使用 Python 2.7.12。我已经为机器安装了 liac-arff 和 arff 模块。以下行会引发错误。 arff_frame = arff.load( o
我有一些代码可以给我一个单词列表以及它们在文本中出现的频率,我正在寻找它以便代码自动将前 10 个单词转换为 ARFF @RELATION 词频 @ATTRIBUTE 字串@ATTRIBUTE 频率数
我正在使用 Java 程序生成一个 .arff 文件。该文件有大约 600 个属性。 我无法在 Weka Explorer 中打开该文件。它说:“标称值未在 header 中声明,请阅读 Token[
我正在尝试学习 Weka:我正在使用此处的 Iris 数据集 http://storm.cis.fordham.edu/~gweiss/data-mining/weka-data/iris.arff
Weka 中的分类器(例如决策树)将如何解释“?” (表示 ARFF 文件中的缺失值)在学习阶段?Weka 会用一些预定义的值(例如“0”或“false”)替换它,还是会以某种方式影响训练过程? 最佳
我试图在 weka 中打开一个 arff 文件,但出现两个错误。 第一个,“文件未被识别为 arff 文件。原因:标称值未在标题中声明,读取 token [25],第 772 行” 奇怪的是,我删除了
我需要在我的 Java 应用程序中打印使用 Weka 对上传文件应用过滤方法后生成的 ARFF 文件。 Weka 中有什么方法或任何方法可以将 ARFF 文件打印为二维数组吗?我需要打印参数名称和值。
这是我在这个论坛上的第一个问题....我正在使用 WEKA API 在 Java 中制作数据挖掘应用程序。我首先进行预处理阶段,当我保存 ARFF 文件时,我想添加几行(作为注释)来指定我对文件所做的
我正在编写一个脚本来使用 weka 进行一些分类,当我尝试运行分类器时出现错误。我已经使用 weka.core.converters.CSVLoader 从 CSV 文件转换了文件。 然后我使用 we
有人成功地尝试从 Windows 命令行将许多 ARFF 文件转换为 CSV 文件。 我尝试使用 weka.core.converters.CSVSaver 但它仅适用于单个文件。 可以对多个文件做吗
我是java初学者,我想将现有的.csv文件转换为.arff文件,我已经编写了下面的代码,但它没有转换,而是出现了错误。请任何人帮助我解决这些错误并建议我如何 程序: import weka.core
我是一名优秀的程序员,十分优秀!