예제 #1
0
 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
예제 #2
0
파일: svm.py 프로젝트: aipjn/Classproject
 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)
예제 #3
0
# 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
예제 #4
0
    # 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
예제 #5
0
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.
예제 #6
0
#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))
예제 #7
0
#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))
예제 #8
0
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