[normalize] Add a stopword removing option to simplify()
authorSimon Chabot <simon.chabot@logilab.fr>
Wed, 24 Oct 2012 11:52:22 +0200
changeset 38 9bcbce18a9ae
parent 37 dcdb1b91f33a
child 39 123be7546415
[normalize] Add a stopword removing option to simplify()
minhashing.py
normalize.py
--- a/minhashing.py	Wed Oct 24 11:29:08 2012 +0200
+++ b/minhashing.py	Wed Oct 24 11:52:22 2012 +0200
@@ -166,7 +166,7 @@
         print ' - %s' % s
 
     print '\nLes phrases *possiblement* similaires sont : '
-    for s in minlsh.findsimilarsentences(5):
+    for s in minlsh.findsimilarsentences(15):
         for e in s:
             print ' -', sentences[e]
         print
--- a/normalize.py	Wed Oct 24 11:29:08 2012 +0200
+++ b/normalize.py	Wed Oct 24 11:52:22 2012 +0200
@@ -20,11 +20,29 @@
 from nltk.tokenize import WordPunctTokenizer
 from string import punctuation
 
+
+STOPWORDS = set([u'alors', u'au', u'aucuns', u'aussi', u'autre', u'avant',
+u'avec', u'avoir', u'bon', u'car', u'ce', u'cela', u'ces', u'ceux', u'chaque',
+u'ci', u'comme', u'comment', u'dans', u'des', u'du', u'dedans', u'dehors',
+u'depuis', u'deux', u'devrait', u'doit', u'donc', u'dos', u'droite', u'début',
+u'elle', u'elles', u'en', u'encore', u'essai', u'est', u'et', u'eu', u'fait',
+u'faites', u'fois', u'font', u'force', u'haut', u'hors', u'ici', u'il', u'ils',
+u'je', u'juste', u'la', u'le', u'les', u'leur', u'là', u'ma', u'maintenant',
+u'mais', u'mes', u'mine', u'moins', u'mon', u'mot', u'même', u'ni', u'nommés',
+u'notre', u'nous', u'nouveaux', u'ou', u'où', u'par', u'parce', u'parole',
+u'pas', u'personnes', u'peut', u'peu', u'pièce', u'plupart', u'pour',
+u'pourquoi', u'quand', u'que', u'quel', u'quelle', u'quelles', u'quels', u'qui',
+u'sa', u'sans', u'ses', u'seulement', u'si', u'sien', u'son', u'sont', u'sous',
+u'soyez', u'sujet', u'sur', u'ta', u'tandis', u'tellement', u'tels', u'tes',
+u'ton', u'tous', u'tout', u'trop', u'très', u'tu', u'valeur', u'voie',
+u'voient', u'vont', u'votre', u'vous', u'vu', u'ça', u'étaient', u'état',
+u'étions', u'été', u'être'])
+
 def lunormalize(sentence):
     """ Normalize a sentence (ie remove accents, set to lower, etc) """
     return unormalize(sentence).lower()
 
-def simplify(sentence, lemmas = None):
+def simplify(sentence, lemmas = None, removeStopWords = True):
     if lemmas:
         sentence = lemmatized(sentence, lemmas)
     sentence = sentence.lower()
@@ -33,7 +51,10 @@
         if s not in punctuation:
             cleansent += s
 
-    return cleansent
+    if not removeStopWords:
+        return cleansent
+    else:
+        return ' '.join([w for w in cleansent.split(' ') if w not in STOPWORDS])
 
 
 def tokenize(sentence, tokenizer = None):