def import_part_corpus(self, lang='es'): """ :Version: 1.0 :Author: Edwin Puertas This function import corpus in spanish and english from NTLK. :param lang: language :type lang: Text :rtype: Object :return: Object embedding """ result = [] try: print('Loading.... {0} corpus'.format('CESS' if self.lang == 'es' else 'BROWN')) sentences_list = cess_esp.sents() if lang == 'es' else brown.sents( categories=['editorial']) for sent in tqdm(list(sentences_list)): list_text = [str(token).lower() for token in list(sent)] text = ' '.join(list_text) result.append(text) except Exception as e: Utils.standard_error(sys.exc_info()) print('Error import_phonemes_corpus: {0}'.format(e)) return result
def __init__(self, language): self.language = language # from 'Multilingual and Cross-Lingual Complex Word Identification' (Yimam et. al, 2017) if language == 'english': self.avg_word_length = 5.3 # from Beker, Henry; Piper, Fred. Cipher Systems: The Protection of Communications. self.char_frequency = { 'a': 8.167, 'b': 1.492, 'c': 2.782, 'd': 4.253, 'e': 12.702, 'f': 2.228, 'g': 2.015, 'h': 6.094, 'i': 6.966, 'j': 0.153, 'k': 0.772, 'l': 4.025, 'm': 2.406, 'n': 6.749, 'o': 7.507, 'p': 1.929, 'q': 0.095, 'r': 5.987, 's': 6.327, 't': 9.056, 'u': 2.758, 'v': 0.978, 'w': 2.360, 'x': 0.150, 'y': 1.974, 'z': 0.074 } self.dic = pyphen.Pyphen(lang='en') self.reuters = reuters.words() self.unigram_counts = Counter(self.reuters) bigrams = [] for sent in reuters.sents(): bigrams.extend( nltk.bigrams(sent, pad_left=True, pad_right=True)) self.bigram_counts = Counter(bigrams) else: # spanish self.avg_word_length = 6.2 # self.char_frequency = {'a': 12.525,'b': 2.215,'c': 4.139,'d': 5.860,'e': 13.681, # 'f': 0.692,'g': 1.768,'h': 0.703,'i': 6.247,'j': 0.443, # 'k': 0.011,'l': 4.967,'m': 3.157,'n': 6.71,'o': 8.683, # 'p': 2.510, 'q': 0.877,'r': 6.871,'s': 7.977,'t': 4.632, # 'u': 3.927, 'v': 1.138,'w': 0.017,'x': 0.215,'y': 1.008, # 'z': 0.517,'á': 0.502, 'é': 0.433, 'í': 0.725, 'ñ': 0.311, # 'ó': 0.827, 'ú': 0.168, 'ü': 0.012} # self.dic = pyphen.Pyphen(lang='es') self.cess = cess.words() self.unigram_counts = Counter(self.cess) bigrams = [] for sent in cess.sents(): bigrams.extend( nltk.bigrams(sent, pad_left=True, pad_right=True)) self.bigram_counts = Counter(bigrams) # self.clf = svm.SVC() # self.model = LogisticRegression() self.model = svm.SVC(gamma=5)
# Exercise 1 # 1 from nltk.corpus import cess_esp # 2 print("2.", len(cess_esp.words())) # 3 print("3.", len(cess_esp.sents())) # 4 from nltk.probability import FreqDist first_file = cess_esp.fileids()[0] cess_freq0 = FreqDist(cess_esp.words(first_file)) print("4.", cess_freq0.most_common(20)) # 5 print("5.", [w for w, k in cess_freq0.most_common()]) # 6 print("6.", [w for w, k in cess_freq0.items() if len(w) > 7 and k > 2]) # 7 print("7.", [k for w, k in cess_freq0.most_common()]) print("7b. Freq de aparición de la preposición a", cess_freq0.get("a", 0)) # 8 print("8. No de palabras que aparecen una sola vez:", len([w for w, k in cess_freq0.items() if k == 1])) # 9 print("9. La palabra más frecuente es", cess_freq0.max()) # 10 from nltk.corpus import PlaintextCorpusReader mycorpus = PlaintextCorpusReader("../res/", ".*") # 11
# Ajusta a los datos model.fit(train_data, padded_sents) return model def save_model(model, model_name='trained_model.pkl'): with open('trained_model.pkl', 'wb') as fout: pickle.dump(model, fout) def load_model(model_name='trained_model.pkl'): with open('trained_model.pkl', 'rb') as fin: return pickle.load(fin) # tokenized_corpus = tokenize_corpus(corpus) model = create_and_fit_model(cess_esp.sents()) save_model(model, 'trained_model.pkl') model_loaded = load_model('trained_model.pkl') print(model_loaded.score('central', ['una'])) print(model_loaded.score('tal', ['que'])) print(model_loaded.logscore('central', ['una'])) print(model_loaded.logscore('tal', ['que'])) # print(model.score('tal', ['Hola que'])): # probabilidad de que aparezca 'tal' dado que ocurrió un 'Hola que' anteriormente
def printfreq(listaimp): freqtoprint = FreqDist(listaimp) print(freqtoprint.most_common(20)) #Ejercicio 1 #1 Acceder al corpus en castellano cess_esp from nltk.corpus import cess_esp as corpus #2 Mostrar el número de palabras que contiene este corpus print(len(corpus.words())) #3 Mostrar el número de frases que contiene print(len(corpus.sents())) #4 Obtener las frecuencias de aparición de los ítems que componen el primer fichero del corpus #anterior. Un ítem es un par (key, value) donde key es la palabra y value es la frecuencia de #aparición de la palabra. Visualizar los 20 más frecuentes. text1 = corpus.words(corpus.fileids()[0]) fdist = FreqDist(text1) print(fdist.most_common(20)) #5 Obtener el vocabulario del primer fichero del corpus (ordenado por frecuencia) #vocxfrec= sorted([(b,a) for a,b in sorted([(y,x) for x,y in fdist.keys()])]) #vocxfrec = sorted([key for key in sorted([(value, key) for key,value in fdist.most_common()])]) vocxfrec = [key for (key, value) in fdist.most_common()] print(vocxfrec) #6 Obtener de forma ordenada las palabras del vocabulario de longitud mayor que 7 y que aparezcan más de 2 veces en el primer fichero del corpus.
#Salvador Marti Roman from nltk.corpus import cess_esp from nltk.corpus import PlaintextCorpusReader from nltk.probability import * import os import nltk dir_path = os.path.dirname(os.path.realpath(__file__)) corpus_root = dir_path.replace(".idea", "") nltk.data.path.append(dir_path + "\\NLTK") #EJERCICIO1 print("#act2") print(len(cess_esp.words())) print("#act3") print(len(cess_esp.sents())) print("#act4") text = cess_esp.words(cess_esp.fileids()[0]) fdist = FreqDist(text) print(fdist.most_common(20)) print("#act5") voc = [w for w, f in fdist.most_common()] print(voc) print("#act6") print(list(w for w in voc if len(w) > 7 and fdist[w] > 2)) print("#act7") print(sorted(fdist.values(), key=int, reverse=True))
#Mostrar el número de palabras que contiene este corpus print("\n\nEJERCICIO 1\n") print( "\n--------------------------------------------------------------------------------\n " ) cess_esp.words() palabras = len(cess_esp.words()) print("1.1) Cargando Corpus cess_esp...") print( "\n--------------------------------------------------------------------------------\n " ) print("\n\n1.2) Numero de palabras que contiene el corpus: \n" + str(palabras)) #Obtener oraciones del corpus: frases = cess_esp.sents() numFrases = len(cess_esp.sents()) print( "\n--------------------------------------------------------------------------------\n " ) print("\n\n1.3) Numero de frases que contiene el corpus: \n" + str(numFrases)) nomFichero = cess_esp.fileids()[0] texto = cess_esp.words(nomFichero) fdist = FreqDist(texto) # Visualizar los pares (palabra, frecuencia) correspondientes a las 20 palabras más frecuentes: items = fdist.most_common(20) print( "\n--------------------------------------------------------------------------------\n " ) print("\n\n1.4) 20 items mas frecuentes: \n" + str(items))
from nltk.tokenize import RegexpTokenizer from nltk.stem import SnowballStemmer tokenizer = RegexpTokenizer(r'\w+') def remove_stopwords(text, language="english"): stopwordsw = stopwords.words(language) result = [w for w in text if w.lower() not in stopwordsw] return result # Ejercicio 1 # Mostrar el número de palabras que contiene este corpus print("El numero de palabras en este corpus es %d" % len(cess_esp.words())) # Mostrar el número de frases que contiene print("El número de oraciones en este corpues es %d" % len(cess_esp.sents())) """ Obtener las frecuencias de aparición de los ítems que componen el primer fichero del corpus anterior. Un ítem es un par (key, value) donde key es la palabra y value es la frecuencia de aparición de la palabra. Visualizar los 20 más frecuentes. """ text = cess_esp.words(cess_esp.fileids()[0]) fdist = FreqDist(text) print(fdist.most_common(20)) # Obtener el vocabulario del primer fichero del corpus (ordenado por frecuencia). print("vocabulario ordenado por frecuencia") p = [w for w, f in fdist.most_common()] print(p) # Obtener de forma ordenada las palabras del vocabulario de longitud mayor que 7 y # que aparezcan más de 2 veces en el primer fichero del corpus