Tengo un código que me da una lista de palabras con sus frecuencias que ocurren en el texto, estoy buscando hacerlo para que el código convierta automáticamente las primeras 10 palabras en un ARFF conCreando ARFF a partir de frecuencias de palabras
wordfrequencies @RELATION
@ATTRIBUTE cadena de palabras de frecuencia @ATTRIBUTE numérico
y el top 10 como datos con su frecuencia.
estoy luchando con la forma de hacer esto con mi código actual
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()
Cualquier ayuda con esto se aprecia, una forma de hacer esto es realmente devanando los sesos!
No estoy seguro si esto ayudará, pero puede ser que le mostrará cómo hacer un arff para todas las palabras y luego editarlo para tomar sólo los 10 primeros ? http://stackoverflow.com/questions/5230699/creating-an-arff-file-from-python-output – jenniem001