From e13e47e9e572a47ae5dca455cdb18c0811979839 Mon Sep 17 00:00:00 2001 From: Matthew Honnibal Date: Mon, 14 Sep 2015 17:48:51 +1000 Subject: [PATCH] * Add English stop words --- spacy/en/__init__.py | 32 ++++++++++++++++++++++++++++++++ spacy/language.py | 6 +++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/spacy/en/__init__.py b/spacy/en/__init__.py index f68ff196e..4d057db20 100644 --- a/spacy/en/__init__.py +++ b/spacy/en/__init__.py @@ -6,7 +6,39 @@ from ..language import Language LOCAL_DATA_DIR = path.join(path.dirname(__file__), 'data') + +# improved list from Stone, Denis, Kwantes (2010) +STOPWORDS = """ +a about above across after afterwards again against all almost alone along already also although always am among amongst amoungst amount an and another any anyhow anyone anything anyway anywhere are around as at back be +became because become becomes becoming been before beforehand behind being below beside besides between beyond bill both bottom but by call can +cannot cant co computer con could couldnt cry de describe +detail did didn do does doesn doing don done down due during +each eg eight either eleven else elsewhere empty enough etc even ever every everyone everything everywhere except few fifteen +fify fill find fire first five for former formerly forty found four from front full further get give go +had has hasnt have he hence her here hereafter hereby herein hereupon hers herself him himself his how however hundred i ie +if in inc indeed interest into is it its itself keep last latter latterly least less ltd +just +kg km +made make many may me meanwhile might mill mine more moreover most mostly move much must my myself name namely +neither never nevertheless next nine no nobody none noone nor not nothing now nowhere of off +often on once one only onto or other others otherwise our ours ourselves out over own part per +perhaps please put rather re +quite +rather really regarding +same say see seem seemed seeming seems serious several she should show side since sincere six sixty so some somehow someone something sometime sometimes somewhere still such system take ten +than that the their them themselves then thence there thereafter thereby therefore therein thereupon these they thick thin third this those though three through throughout thru thus to together too top toward towards twelve twenty two un under +until up unless upon us used using +various very very via +was we well were what whatever when whence whenever where whereafter whereas whereby wherein whereupon wherever whether which while whither who whoever whole whom whose why will with within without would yet you +your yours yourself yourselves +""" +STOPWORDS = set(w for w in STOPWORDS.split() if w) + class English(Language): @classmethod def default_data_dir(cls): return LOCAL_DATA_DIR + + @staticmethod + def is_stop(string): + return 1 if string.lower() in STOPWORDS else 0 diff --git a/spacy/language.py b/spacy/language.py index f32756a4d..c3a938458 100644 --- a/spacy/language.py +++ b/spacy/language.py @@ -94,6 +94,10 @@ class Language(object): def like_email(string): return orth.like_email(string) + @staticmethod + def is_stop(string): + return 0 + @classmethod def default_lex_attrs(cls, data_dir=None): return { @@ -116,7 +120,7 @@ class Language(object): attrs.LIKE_URL: cls.like_url, attrs.LIKE_NUM: cls.like_number, attrs.LIKE_EMAIL: cls.like_email, - attrs.IS_STOP: lambda string: False, + attrs.IS_STOP: cls.is_stop, attrs.IS_OOV: lambda string: True }