Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! -*- encoding: utf8 -*-
- import re
- import sys
- clean_re = re.compile('\W+')
- stopWordsList = open("stopwords_en.txt", "r").read().split()
- def clean_text(text):
- return clean_re.sub(' ', text)
- def sort_dic(d):
- for key, value in sorted(d.items(), key=lambda a: (-a[1], a[0])):
- yield key, value
- def text_statistics(filename, to_lower=True, remove_stopwords=True):
- sourceText = open(filename, "r").read()
- #Si se pasa a minuscula
- if(to_lower):
- sourceText = sourceText.lower()
- wordDict = {}
- symbolDict = {}
- #Se crea diccionario de Simbolos y de Palabras
- sourceTextWords = clean_text(sourceText).split()
- for word in sourceTextWords:
- wordDict[word] = wordDict.get(word, 0) + 1
- for symbol in word:
- symbolDict[symbol] = symbolDict.get(symbol, 0) + 1
- #Número de líneas.
- lineNumber = 0
- sourceTextLines = sourceText.split("\n")
- lineNumber = len(sourceTextLines)
- print("Numero de líneas: ", lineNumber)
- #Número de palabras.
- wordNumber = 0
- for value in wordDict.values():
- wordNumber += value
- print("Numero de palabras: ", wordNumber)
- #Número de palabras sin stopwords (en el caso de elegir eliminarlas).
- if remove_stopwords:
- noStopWordsCount = 0
- for stopWord in stopWordsList:
- if stopWord in wordDict:
- del(wordDict[stopWord])
- for value in wordDict.values():
- noStopWordsCount += value
- print("Numero de palabras sin stopwords: ", noStopWordsCount)
- #Vocabulario: número de palabras distintas que aparecen en el texto.
- print("Vocabulario: ", len(wordDict.keys()))
- #Símbolos: número de letras que aparecen en el texto.
- symbolNum = 0
- for value in symbolDict.values():
- symbolNum += value
- print("Simbolos: ", symbolNum)
- #Símbolos distintos: número de letras distintas que aparecen en el texto.
- print("Simbolos distintos: ", len(symbolDict))
- #Número de veces que aparece cada palabra: ordenado alfabéticamente y por el
- # número de veces que aparecen.
- #Número de veces que aparece cada letra: ordenado alfabéticamente y por el
- # numero de veces que aparecen.
- def syntax():
- print ("\n%s filename.txt [to_lower?[remove_stopwords?]\n" % sys.argv[0])
- sys.exit()
- if __name__ == "__main__":
- if len(sys.argv) < 2:
- syntax()
- name = sys.argv[1]
- lower = False
- stop = False
- if len(sys.argv) > 2:
- lower = (sys.argv[2] in ('1', 'True', 'yes'))
- if len(sys.argv) > 3:
- stop = (sys.argv[3] in ('1', 'True', 'yes'))
- text_statistics(name, to_lower=lower, remove_stopwords=stop)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement