Advertisement
Lanver

cuentaPalabras

Feb 23rd, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.75 KB | None | 0 0
  1. #! -*- encoding: utf8 -*-
  2.  
  3. import re
  4. import sys
  5.  
  6. clean_re = re.compile('\W+')
  7. stopWordsList = open("stopwords_en.txt", "r").read().split()
  8.  
  9. def clean_text(text):
  10.     return clean_re.sub(' ', text)
  11.  
  12. def sort_dic(d):
  13.     for key, value in sorted(d.items(), key=lambda a: (-a[1], a[0])):
  14.         yield key, value
  15.  
  16. def text_statistics(filename, to_lower=True, remove_stopwords=True):
  17.     sourceText = open(filename, "r").read()
  18.  
  19.     #Si se pasa a minuscula
  20.     if(to_lower):
  21.         sourceText = sourceText.lower()
  22.    
  23.     wordDict = {}
  24.     symbolDict = {}      
  25.  
  26.     #Se crea diccionario de Simbolos y de Palabras
  27.     sourceTextWords = clean_text(sourceText).split()
  28.     for word in sourceTextWords:
  29.         wordDict[word] = wordDict.get(word, 0) + 1
  30.         for symbol in word:
  31.             symbolDict[symbol] = symbolDict.get(symbol, 0) + 1
  32.  
  33.     #Número de líneas.
  34.     lineNumber =  0
  35.     sourceTextLines = sourceText.split("\n")
  36.     lineNumber = len(sourceTextLines)
  37.     print("Numero de líneas: ", lineNumber)
  38.    
  39.     #Número de palabras.
  40.     wordNumber = 0
  41.     for value in wordDict.values():
  42.             wordNumber += value
  43.     print("Numero de palabras: ", wordNumber)
  44.  
  45.     #Número de palabras sin stopwords (en el caso de elegir eliminarlas).
  46.     if remove_stopwords:
  47.         noStopWordsCount = 0
  48.         for stopWord in stopWordsList:
  49.             if stopWord in wordDict:
  50.                 del(wordDict[stopWord])
  51.  
  52.         for value in wordDict.values():
  53.             noStopWordsCount += value
  54.  
  55.         print("Numero de palabras sin stopwords: ", noStopWordsCount)
  56.    
  57.     #Vocabulario: número de palabras distintas que aparecen en el texto.
  58.     print("Vocabulario: ", len(wordDict.keys()))
  59.  
  60.     #Símbolos: número de letras que aparecen en el texto.
  61.     symbolNum = 0
  62.     for value in symbolDict.values():
  63.         symbolNum += value
  64.     print("Simbolos: ", symbolNum)
  65.  
  66.     #Símbolos distintos: número de letras distintas que aparecen en el texto.
  67.     print("Simbolos distintos: ", len(symbolDict))
  68.  
  69.     #Número de veces que aparece cada palabra: ordenado alfabéticamente y por el
  70.     #   número de veces que aparecen.
  71.  
  72.  
  73.     #Número de veces que aparece cada letra: ordenado alfabéticamente y por el
  74.     #   numero de veces que aparecen.
  75.  
  76.  
  77. def syntax():
  78.     print ("\n%s filename.txt [to_lower?[remove_stopwords?]\n" % sys.argv[0])
  79.     sys.exit()
  80.  
  81. if __name__ == "__main__":
  82.     if len(sys.argv) < 2:
  83.         syntax()
  84.     name = sys.argv[1]
  85.     lower = False
  86.     stop = False
  87.     if len(sys.argv) > 2:
  88.         lower = (sys.argv[2] in ('1', 'True', 'yes'))
  89.         if len(sys.argv) > 3:
  90.             stop = (sys.argv[3] in ('1', 'True', 'yes'))
  91.     text_statistics(name, to_lower=lower, remove_stopwords=stop)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement