pragmatic_tokenizer 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +5 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +125 -0
  8. data/Rakefile +5 -0
  9. data/bin/console +14 -0
  10. data/bin/setup +7 -0
  11. data/lib/pragmatic_tokenizer.rb +2 -0
  12. data/lib/pragmatic_tokenizer/languages.rb +65 -0
  13. data/lib/pragmatic_tokenizer/languages/arabic.rb +9 -0
  14. data/lib/pragmatic_tokenizer/languages/bulgarian.rb +9 -0
  15. data/lib/pragmatic_tokenizer/languages/catalan.rb +9 -0
  16. data/lib/pragmatic_tokenizer/languages/common.rb +9 -0
  17. data/lib/pragmatic_tokenizer/languages/czech.rb +9 -0
  18. data/lib/pragmatic_tokenizer/languages/danish.rb +9 -0
  19. data/lib/pragmatic_tokenizer/languages/deutsch.rb +9 -0
  20. data/lib/pragmatic_tokenizer/languages/dutch.rb +9 -0
  21. data/lib/pragmatic_tokenizer/languages/english.rb +91 -0
  22. data/lib/pragmatic_tokenizer/languages/finnish.rb +9 -0
  23. data/lib/pragmatic_tokenizer/languages/french.rb +9 -0
  24. data/lib/pragmatic_tokenizer/languages/greek.rb +9 -0
  25. data/lib/pragmatic_tokenizer/languages/indonesian.rb +9 -0
  26. data/lib/pragmatic_tokenizer/languages/italian.rb +9 -0
  27. data/lib/pragmatic_tokenizer/languages/latvian.rb +9 -0
  28. data/lib/pragmatic_tokenizer/languages/norwegian.rb +9 -0
  29. data/lib/pragmatic_tokenizer/languages/persian.rb +9 -0
  30. data/lib/pragmatic_tokenizer/languages/polish.rb +9 -0
  31. data/lib/pragmatic_tokenizer/languages/portuguese.rb +9 -0
  32. data/lib/pragmatic_tokenizer/languages/romanian.rb +9 -0
  33. data/lib/pragmatic_tokenizer/languages/russian.rb +9 -0
  34. data/lib/pragmatic_tokenizer/languages/slovak.rb +9 -0
  35. data/lib/pragmatic_tokenizer/languages/spanish.rb +9 -0
  36. data/lib/pragmatic_tokenizer/languages/swedish.rb +9 -0
  37. data/lib/pragmatic_tokenizer/languages/turkish.rb +9 -0
  38. data/lib/pragmatic_tokenizer/processor.rb +145 -0
  39. data/lib/pragmatic_tokenizer/tokenizer.rb +78 -0
  40. data/lib/pragmatic_tokenizer/version.rb +3 -0
  41. data/pragmatic_tokenizer.gemspec +24 -0
  42. metadata +125 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c0bd462abe40a0e2181846866ad6d86729445aca
4
+ data.tar.gz: 91c4061212fbfec69d495b1d67ed48c92dc9e8df
5
+ SHA512:
6
+ metadata.gz: 6a50ec19acc737299e8f1cc90c12fbce7b5c6d07da2bf4625308321031d54844a4861232f717a44a9aa9f8e94f036d0229e837e01fb012372b2979ed725275e1
7
+ data.tar.gz: ef87c552cdc66f4b99fc7504f37a2d13f6999b8d72b57e7b10e45e098f4d2b6e84f32fc798d7dfe947586fd2dfde133401208001f32ef88833cd38b56af37eca
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.2
4
+ - 2.2.0
5
+ - 2.2.4
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in pragmatic_tokenizer.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Kevin S. Dias
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,125 @@
1
+ # Pragmatic Tokenizer
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/pragmatic_tokenizer.svg)](http://badge.fury.io/rb/pragmatic_tokenizer) [![Build Status](https://travis-ci.org/diasks2/pragmatic_tokenizer.png)](https://travis-ci.org/diasks2/pragmatic_tokenizer) [![License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat)](https://github.com/diasks2/pragmatic_tokenizer/blob/master/LICENSE.txt)
4
+
5
+ Pragmatic Tokenizer is a multilingual tokenizer to split a string into tokens.
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'pragmatic_tokenizer'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install pragmatic_tokenizer
22
+
23
+ ## Usage
24
+
25
+ * If no language is specified, the library will default to English.
26
+ * To specify a language use its two character [ISO 639-1 code](https://www.tm-town.com/languages).
27
+
28
+ **Options**
29
+
30
+ ##### `punctuation`
31
+ **default** = `'all'`
32
+ - `'all'`
33
+ Does not remove any punctuation from the result.
34
+ - `'semi'`
35
+ Removes full stops (i.e. periods) ['。', '.', '.'].
36
+ - `'none'`
37
+ Removes all punctuation from the result.
38
+ - `'only'`
39
+ Removes everything except punctuation. The returned result is an array of only the punctuation.
40
+
41
+ <hr>
42
+
43
+ ##### `remove_stop_words`
44
+ **default** = `'false'`
45
+ - `true`
46
+ Removes all stop words.
47
+ - `false`
48
+ Does not remove stop words.
49
+
50
+ <hr>
51
+
52
+ ##### `expand_contractions`
53
+ **default** = `'false'`
54
+ - `true`
55
+ Expands contractions (i.e. i'll -> i will).
56
+ - `false`
57
+ Leaves contractions as is.
58
+
59
+ **Example Usage**
60
+ ```ruby
61
+ text = "\"I said, 'what're you? Crazy?'\" said Sandowsky. \"I can't afford to do that.\""
62
+
63
+ PragmaticTokenizer::Tokenizer.new(text).tokenize
64
+ # => ["\"", "i", "said", ",", "'", "what're", "you", "?", "crazy", "?", "'", "\"", "said", "sandowsky", ".", "\"", "i", "can't", "afford", "to", "do", "that", ".", "\""]
65
+
66
+ PragmaticTokenizer::Tokenizer.new(text, remove_stop_words: true).tokenize
67
+ # => ["\"", ",", "'", "what're", "?", "crazy", "?", "'", "\"", "sandowsky", ".", "\"", "afford", ".", "\""]
68
+
69
+ PragmaticTokenizer::Tokenizer.new(text, punctuation: 'none').tokenize
70
+ # => ["i", "said", "what're", "you", "crazy", "said", "sandowsky", "i", "can't", "afford", "to", "do", "that"]
71
+
72
+ PragmaticTokenizer::Tokenizer.new(text, punctuation: 'only').tokenize
73
+ # => ["\"", ",", "'", "?", "?", "'", "\"", ".", "\"", ".", "\""]
74
+
75
+ PragmaticTokenizer::Tokenizer.new(text, punctuation: 'semi').tokenize
76
+ # => ["\"", "i", "said", ",", "'", "what're", "you", "?", "crazy", "?", "'", "\"", "said", "sandowsky", "\"", "i", "can't", "afford", "to", "do", "that", "\""]
77
+
78
+ PragmaticTokenizer::Tokenizer.new(text, expand_contractions: true).tokenize
79
+ # => ['"', 'i', 'said', ',', "'", 'what', 'are', 'you', '?', 'crazy', '?', "'", '"', 'said', 'sandowsky', '.', '"', 'i', 'cannot', 'afford', 'to', 'do', 'that', '.', '"']
80
+
81
+ PragmaticTokenizer::Tokenizer.new(text,
82
+ expand_contractions: true,
83
+ remove_stop_words: true,
84
+ punctuation: 'none'
85
+ ).tokenize
86
+ # => ["crazy", "sandowsky", "afford"]
87
+ ```
88
+
89
+ ## Development
90
+
91
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
92
+
93
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
94
+
95
+ ## Contributing
96
+
97
+ 1. Fork it ( https://github.com/diasks2/pragmatic_tokenizer/fork )
98
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
99
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
100
+ 4. Push to the branch (`git push origin my-new-feature`)
101
+ 5. Create a new Pull Request
102
+
103
+ ## License
104
+
105
+ The MIT License (MIT)
106
+
107
+ Copyright (c) 2016 Kevin S. Dias
108
+
109
+ Permission is hereby granted, free of charge, to any person obtaining a copy
110
+ of this software and associated documentation files (the "Software"), to deal
111
+ in the Software without restriction, including without limitation the rights
112
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
113
+ copies of the Software, and to permit persons to whom the Software is
114
+ furnished to do so, subject to the following conditions:
115
+
116
+ The above copyright notice and this permission notice shall be included in
117
+ all copies or substantial portions of the Software.
118
+
119
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
120
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
121
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
122
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
123
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
124
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
125
+ THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,5 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "pragmatic_tokenizer"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,2 @@
1
+ require "pragmatic_tokenizer/version"
2
+ require "pragmatic_tokenizer/tokenizer"
@@ -0,0 +1,65 @@
1
+ require 'pragmatic_tokenizer/processor'
2
+
3
+ require 'pragmatic_tokenizer/languages/common'
4
+
5
+ require 'pragmatic_tokenizer/languages/english'
6
+ require 'pragmatic_tokenizer/languages/arabic'
7
+ require 'pragmatic_tokenizer/languages/bulgarian'
8
+ require 'pragmatic_tokenizer/languages/catalan'
9
+ require 'pragmatic_tokenizer/languages/czech'
10
+ require 'pragmatic_tokenizer/languages/danish'
11
+ require 'pragmatic_tokenizer/languages/deutsch'
12
+ require 'pragmatic_tokenizer/languages/greek'
13
+ require 'pragmatic_tokenizer/languages/spanish'
14
+ require 'pragmatic_tokenizer/languages/persian'
15
+ require 'pragmatic_tokenizer/languages/finnish'
16
+ require 'pragmatic_tokenizer/languages/french'
17
+ require 'pragmatic_tokenizer/languages/indonesian'
18
+ require 'pragmatic_tokenizer/languages/italian'
19
+ require 'pragmatic_tokenizer/languages/latvian'
20
+ require 'pragmatic_tokenizer/languages/dutch'
21
+ require 'pragmatic_tokenizer/languages/norwegian'
22
+ require 'pragmatic_tokenizer/languages/polish'
23
+ require 'pragmatic_tokenizer/languages/portuguese'
24
+ require 'pragmatic_tokenizer/languages/romanian'
25
+ require 'pragmatic_tokenizer/languages/russian'
26
+ require 'pragmatic_tokenizer/languages/slovak'
27
+ require 'pragmatic_tokenizer/languages/swedish'
28
+ require 'pragmatic_tokenizer/languages/turkish'
29
+
30
+ module PragmaticTokenizer
31
+ module Languages
32
+ LANGUAGE_CODES = {
33
+ 'en' => English,
34
+ 'ar' => Arabic,
35
+ 'bg' => Bulgarian,
36
+ 'ca' => Catalan,
37
+ 'cs' => Czech,
38
+ 'da' => Danish,
39
+ 'de' => Deutsch,
40
+ 'el' => Greek,
41
+ 'es' => Spanish,
42
+ 'fa' => Persian,
43
+ 'fi' => Finnish,
44
+ 'fr' => French,
45
+ 'id' => Indonesian,
46
+ 'it' => Italian,
47
+ 'lv' => Latvian,
48
+ 'nl' => Dutch,
49
+ 'nn' => Norwegian,
50
+ 'nb' => Norwegian,
51
+ 'no' => Norwegian,
52
+ 'pl' => Polish,
53
+ 'pt' => Portuguese,
54
+ 'ro' => Romanian,
55
+ 'ru' => Russian,
56
+ 'sk' => Slovak,
57
+ 'sv' => Swedish,
58
+ 'tr' => Turkish
59
+ }
60
+
61
+ def self.get_language_by_code(code)
62
+ LANGUAGE_CODES[code] || Common
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,9 @@
1
+ module PragmaticTokenizer
2
+ module Languages
3
+ module Arabic
4
+ include Languages::Common
5
+ ABBREVIATIONS = ['ا', 'ا. د', 'ا.د', 'ا.ش.ا', 'ا.ش.ا', 'إلخ', 'ت.ب', 'ت.ب', 'ج.ب', 'جم', 'ج.ب', 'ج.م.ع', 'ج.م.ع', 'س.ت', 'س.ت', 'سم', 'ص.ب.', 'ص.ب', 'كج.', 'كلم.', 'م', 'م.ب', 'م.ب', 'ه', 'د‪']
6
+ STOP_WORDS = ["فى", "في", "كل", "لم", "لن", "له", "من", "هو", "هي", "قوة", "كما", "لها", "منذ", "وقد", "ولا", "نفسه", "لقاء", "مقابل", "هناك", "وقال", "وكان", "نهاية", "وقالت", "وكانت", "للامم", "فيه", "كلم", "لكن", "وفي", "وقف", "ولم", "ومن", "وهو", "وهي", "يوم", "فيها", "منها", "مليار", "لوكالة", "يكون", "يمكن", "مليون", "حيث", "اكد", "الا", "اما", "امس", "السابق", "التى", "التي", "اكثر", "ايار", "ايضا", "ثلاثة", "الذاتي", "الاخيرة", "الثاني", "الثانية", "الذى", "الذي", "الان", "امام", "ايام", "خلال", "حوالى", "الذين", "الاول", "الاولى", "بين", "ذلك", "دون", "حول", "حين", "الف", "الى", "انه", "اول", "ضمن", "انها", "جميع", "الماضي", "الوقت", "المقبل", "اليوم", "ـ", "ف", "و", "و6", "قد", "لا", "ما", "مع", "مساء", "هذا", "واحد", "واضاف", "واضافت", "فان", "قبل", "قال", "كان", "لدى", "نحو", "هذه", "وان", "واكد", "كانت", "واوضح", "مايو", "ب", "ا", "أ", "،", "عشر", "عدد", "عدة", "عشرة", "عدم", "عام", "عاما", "عن", "عند", "عندما", "على", "عليه", "عليها", "زيارة", "سنة", "سنوات", "تم", "ضد", "بعد", "بعض", "اعادة", "اعلنت", "بسبب", "حتى", "اذا", "احد", "اثر", "برس", "باسم", "غدا", "شخصا", "صباح", "اطار", "اربعة", "اخرى", "بان", "اجل", "غير", "بشكل", "حاليا", "بن", "به", "ثم", "اف", "ان", "او", "اي", "بها", "صفر", "فى"]
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module PragmaticTokenizer
2
+ module Languages
3
+ module Bulgarian
4
+ include Languages::Common
5
+ ABBREVIATIONS = ['акад', 'ал', 'бел.а', 'б.р', 'Б.р', 'б.ред', 'бел.пр', 'бр', 'бул', 'в', 'вж', 'вкл', 'вм', 'вр', 'ген', 'г', 'гр', 'дм', 'доц', 'др', 'ем', 'заб', 'зам', 'инж', 'кг', 'км', 'лв', 'к.с', 'кв', 'кв.м', 'кор', 'куб', 'куб.м', 'л', 'м', 'м.г', 'мин', 'млрд', 'млн', 'мм', 'напр', 'н.с', 'пл', 'полк', 'проф', 'р', 'рис', 'с', 'св', 'сек', 'см', 'сп', 'срв', 'ст', 'стр', 'т.е', 'т.г', 'т', 'табл', 'т.н', 'т.нар', 'тел', 'У', 'Дж', 'ул', 'фиг', 'хил', 'ха', 'ч', 'чл', 'щ.д', 'P.S', 'АКАД', 'АЛ', 'БЕЛ.А', 'Б.Р', 'б.Р', 'Б.РЕД', 'БЕЛ.ПР', 'БР', 'БУЛ', 'В', 'ВЖ', 'ВКЛ', 'ВМ', 'ВР', 'ГЕН', 'Г', 'ГР', 'ДМ', 'ДОЦ', 'ДР', 'ЕМ', 'ЗАБ', 'ЗАМ', 'ИНЖ', 'КГ', 'КМ', 'ЛВ', 'К.С', 'КВ', 'КВ.М', 'КОР', 'КУБ', 'КУБ.М', 'Л', 'М', 'М.Г', 'МИН', 'МЛРД', 'МЛН', 'ММ', 'НАПР', 'Н.С', 'ПЛ', 'ПОЛК', 'ПРОФ', 'Р', 'РИС', 'С', 'СВ', 'СЕК', 'СМ', 'СП', 'СРВ', 'СТ', 'СТР', 'Т.Е', 'Т.Г', 'Т', 'ТАБЛ', 'Т.Н', 'Т.НАР', 'ТЕЛ', 'у', 'дЖ', 'УЛ', 'ФИГ', 'ХИЛ', 'ХА', 'Ч', 'ЧЛ', 'Щ.Д', 'Акад', 'Ал', 'Бел.а', 'Б.р', 'Б.р', 'Б.ред', 'Бел.пр', 'Бр', 'Бул', 'В', 'Вж', 'Вкл', 'Вм', 'Вр', 'Ген', 'Г', 'Гр', 'Дм', 'Доц', 'Др', 'Ем', 'Заб', 'Зам', 'Инж', 'Кг', 'Км', 'Лв', 'К.с', 'Кв', 'Кв.м', 'Кор', 'Куб', 'Куб.м', 'Л', 'М', 'М.г', 'Мин', 'Млрд', 'Млн', 'Мм', 'Напр', 'Н.с', 'Пл', 'Полк', 'Проф', 'Р', 'Рис', 'С', 'Св', 'Сек', 'См', 'Сп', 'Срв', 'Ст', 'Стр', 'Т.е', 'Т.г', 'Т', 'Табл', 'Т.н', 'Т.нар', 'Тел', 'У', 'Дж', 'Ул', 'Фиг', 'Хил', 'Ха', 'Ч', 'Чл', 'Щ.д']
6
+ STOP_WORDS = ["а", "автентичен", "аз", "ако", "ала", "бе", "без", "беше", "би", "бивш", "бивша", "бившо", "бил", "била", "били", "било", "благодаря", "близо", "бъдат", "бъде", "бяха", "в", "вас", "ваш", "ваша", "вероятно", "вече", "взема", "ви", "вие", "винаги", "внимава", "време", "все", "всеки", "всички", "всичко", "всяка", "във", "въпреки", "върху", "г", "ги", "главен", "главна", "главно", "глас", "го", "година", "години", "годишен", "д", "да", "дали", "два", "двама", "двамата", "две", "двете", "ден", "днес", "дни", "до", "добра", "добре", "добро", "добър", "докато", "докога", "дори", "досега", "доста", "друг", "друга", "други", "е", "евтин", "едва", "един", "една", "еднаква", "еднакви", "еднакъв", "едно", "екип", "ето", "живот", "за", "забавям", "зад", "заедно", "заради", "засега", "заспал", "затова", "защо", "защото", "и", "из", "или", "им", "има", "имат", "иска", "й", "каза", "как", "каква", "какво", "както", "какъв", "като", "кога", "когато", "което", "които", "кой", "който", "колко", "която", "къде", "където", "към", "лесен", "лесно", "ли", "лош", "м", "май", "малко", "ме", "между", "мек", "мен", "месец", "ми", "много", "мнозина", "мога", "могат", "може", "мокър", "моля", "момента", "му", "н", "на", "над", "назад", "най", "направи", "напред", "например", "нас", "не", "него", "нещо", "нея", "ни", "ние", "никой", "нито", "нищо", "но", "нов", "нова", "нови", "новина", "някои", "някой", "няколко", "няма", "обаче", "около", "освен", "особено", "от", "отгоре", "отново", "още", "пак", "по", "повече", "повечето", "под", "поне", "поради", "после", "почти", "прави", "пред", "преди", "през", "при", "пък", "първата", "първи", "първо", "пъти", "равен", "равна", "с", "са", "сам", "само", "се", "сега", "си", "син", "скоро", "след", "следващ", "сме", "смях", "според", "сред", "срещу", "сте", "съм", "със", "също", "т", "тази", "така", "такива", "такъв", "там", "твой", "те", "тези", "ти", "т.н.", "то", "това", "тогава", "този", "той", "толкова", "точно", "три", "трябва", "тук", "тъй", "тя", "тях", "у", "утре", "харесва", "хиляди", "ч", "часа", "че", "често", "чрез", "ще", "щом", "юмрук", "я", "як"]
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module PragmaticTokenizer
2
+ module Languages
3
+ module Catalan
4
+ include Languages::Common
5
+ ABBREVIATIONS = []
6
+ STOP_WORDS = ["a", "abans", "algun", "alguna", "algunes", "alguns", "altre", "amb", "ambdós", "anar", "ans", "aquell", "aquelles", "aquells", "aquí", "bastant", "bé", "cada", "com", "consegueixo", "conseguim", "conseguir", "consigueix", "consigueixen", "consigueixes", "dalt", "de", "des de", "dins", "el", "elles", "ells", "els", "en", "ens", "entre", "era", "erem", "eren", "eres", "es", "és", "éssent", "està", "estan", "estat", "estava", "estem", "esteu", "estic", "ets", "fa", "faig", "fan", "fas", "fem", "fer", "feu", "fi", "haver", "i", "inclòs", "jo", "la", "les", "llarg", "llavors", "mentre", "meu", "mode", "molt", "molts", "nosaltres", "o", "on", "per", "per que", "però", "perquè", "podem", "poden", "poder", "podeu", "potser", "primer", "puc", "quan", "quant", "qui", "sabem", "saben", "saber", "sabeu", "sap", "saps", "sense", "ser", "seu", "seus", "si", "soc", "solament", "sols", "som", "sota", "també", "te", "tene", "tenim", "tenir", "teniu", "teu", "tinc", "tot", "últim", "un", "una", "unes", "uns", "ús", "va", "vaig", "van", "vosaltres"]
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module PragmaticTokenizer
2
+ module Languages
3
+ module Common
4
+ PUNCTUATION = ['。', '.', '.', '!', '!', '?', '?', '、', '¡', '¿', '„', '“', '[', ']', '"', '#', '$', '%', '&', '(', ')', '*', '+', ',', ':', ';', '<', '=', '>', '@', '^', '_', '`', "'", '{', '|', '}', '~', '-', '«', '»']
5
+ PUNCTUATION_MAP = ['♳', '♴', '♵', '♶', '♷', '♸', '♹', '♺', '⚀', '⚁', '⚂', '⚃', '⚄', '⚅', '☇', '☈', '☉', '☊', '☋', '☌', '☍', '☠', '☢', '☣', '☤', '☥', '☦', '☧', '☀', '☁', '☂', '☃', '☄', "☮", '♔', '♕', '♖', '♗', '♘', '♙', '♚']
6
+ SEMI_PUNCTUATION = ['。', '.', '.']
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module PragmaticTokenizer
2
+ module Languages
3
+ module Czech
4
+ include Languages::Common
5
+ ABBREVIATIONS = []
6
+ STOP_WORDS = ["ačkoli", "ahoj", "ale", "anebo", "ano", "asi", "aspoň", "během", "bez", "beze", "blízko", "bohužel", "brzo", "bude", "budeme", "budeš", "budete", "budou", "budu", "byl", "byla", "byli", "bylo", "byly", "bys", "čau", "chce", "chceme", "chceš", "chcete", "chci", "chtějí", "chtít", "chut'", "chuti", "co", "čtrnáct", "čtyři", "dál", "dále", "daleko", "děkovat", "děkujeme", "děkuji", "den", "deset", "devatenáct", "devět", "do", "dobrý", "docela", "dva", "dvacet", "dvanáct", "dvě", "hodně", "já", "jak", "jde", "je", "jeden", "jedenáct", "jedna", "jedno", "jednou", "jedou", "jeho", "její", "jejich", "jemu", "jen", "jenom", "ještě", "jestli", "jestliže", "jí", "jich", "jím", "jimi", "jinak", "jsem", "jsi", "jsme", "jsou", "jste", "kam", "kde", "kdo", "kdy", "když", "ke", "kolik", "kromě", "která", "které", "kteří", "který", "kvůli", "má", "mají", "málo", "mám", "máme", "máš", "máte", "mé", "mě", "mezi", "mí", "mít", "mně", "mnou", "moc", "mohl", "mohou", "moje", "moji", "možná", "můj", "musí", "může", "my", "na", "nad", "nade", "nám", "námi", "naproti", "nás", "náš", "naše", "naši", "ne", "ně", "nebo", "nebyl", "nebyla", "nebyli", "nebyly", "něco", "nedělá", "nedělají", "nedělám", "neděláme", "neděláš", "neděláte", "nějak", "nejsi", "někde", "někdo", "nemají", "nemáme", "nemáte", "neměl", "němu", "není", "nestačí", "nevadí", "než", "nic", "nich", "ním", "nimi", "nula", "od", "ode", "on", "ona", "oni", "ono", "ony", "osm", "osmnáct", "pak", "patnáct", "pět", "po", "pořád", "potom", "pozdě", "před", "přes", "přese", "pro", "proč", "prosím", "prostě", "proti", "protože", "rovně", "se", "sedm", "sedmnáct", "šest", "šestnáct", "skoro", "smějí", "smí", "snad", "spolu", "sta", "sté", "sto", "ta", "tady", "tak", "takhle", "taky", "tam", "tamhle", "tamhleto", "tamto", "tě", "tebe", "tebou", "ted'", "tedy", "ten", "ti", "tisíc", "tisíce", "to", "tobě", "tohle", "toto", "třeba", "tři", "třináct", "trošku", "tvá", "tvé", "tvoje", "tvůj", "ty", "určitě", "už", "vám", "vámi", "vás", "váš", "vaše", "vaši", "ve", "večer", "vedle", "vlastně", "všechno", "všichni", "vůbec", "vy", "vždy", "za", "zač", "zatímco", "ze", "že", "aby", "aj", "ani", "az", "budem", "budes", "by", "byt", "ci", "clanek", "clanku", "clanky", "coz", "cz", "dalsi", "design", "dnes", "email", "ho", "jako", "jej", "jeji", "jeste", "ji", "jine", "jiz", "jses", "kdyz", "ktera", "ktere", "kteri", "kterou", "ktery", "ma", "mate", "mi", "mit", "muj", "muze", "nam", "napiste", "nas", "nasi", "nejsou", "neni", "nez", "nove", "novy", "pod", "podle", "pokud", "pouze", "prave", "pred", "pres", "pri", "proc", "proto", "protoze", "prvni", "pta", "re", "si", "strana", "sve", "svych", "svym", "svymi", "take", "takze", "tato", "tema", "tento", "teto", "tim", "timto", "tipy", "toho", "tohoto", "tom", "tomto", "tomuto", "tu", "tuto", "tyto", "uz", "vam", "vas", "vase", "vice", "vsak", "zda", "zde", "zpet", "zpravy", "a", "aniž", "až", "být", "což", "či", "článek", "článku", "články", "další", "i", "jenž", "jiné", "již", "jseš", "jšte", "k", "každý", "kteři", "ku", "me", "ná", "napište", "nechť", "ní", "nové", "nový", "o", "práve", "první", "přede", "při", "s", "sice", "své", "svůj", "svých", "svým", "svými", "také", "takže", "te", "těma", "této", "tím", "tímto", "u", "v", "více", "však", "všechen", "z", "zpět", "zprávy"]
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module PragmaticTokenizer
2
+ module Languages
3
+ module Danish
4
+ include Languages::Common
5
+ ABBREVIATIONS = []
6
+ STOP_WORDS = ["De", "I", "af", "aldrig", "alle", "altid", "bagved", "de", "der", "du", "efter", "eller", "en", "endnu", "et", "fjernt", "for", "foran", "fra", "få", "gennem", "god", "han", "her", "hos", "hovfor", "hun", "hurtig", "hvad", "hvem", "hvonår", "hvor", "hvordan", "hvorhen", "imod", "ja", "jeg", "langsom", "lidt", "mange", "med", "meget", "mellem", "mere", "mindre", "måske", "nede", "nej", "nok", "nu", "når", "og", "oppe", "på", "rask", "sammen", "temmelig", "til", "uden", "udenfor", "under", "ved", "vi"]
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module PragmaticTokenizer
2
+ module Languages
3
+ module Deutsch
4
+ include Languages::Common
5
+ ABBREVIATIONS = ["adj", "adm", "adv", "art", "art", "asst", "b.a", "b.s", "bart", "bldg", "brig", "bros", "bse", "buchst", "bzgl", "bzw", "c.-à-d", "ca", "ca", "capt", "chr", "cmdr", "co", "col", "comdr", "con", "corp", "cpl", "d.h", "d.j", "dergl", "dgl", "dkr", "dr ", "ens", "etc", "ev ", "evtl", "ff", "g.g.a", "g.u", "gen", "ggf", "gov", "hon", "hosp", "i.f", "i.h.v", "ii", "iii", "insp", "iv", "ix", "jun", "k.o", "kath ", "lfd", "lt", "ltd", "m.e", "maj", "med", "messrs", "mio", "mlle", "mm", "mme", "mr", "mrd", "mrs", "ms", "msgr", "mwst", "no", "no", "nos", "nos", "nr", "nr", "o.ä", "op", "ord", "pfc", "ph", "pp", "pp", "prof", "pvt", "rep", "reps", "res", "rev", "rt", "s.p.a", "sa", "sen", "sens", "sfc", "sgt", "sog", "sogen", "spp", "sr", "st", "std", "str ", "supt", "surg", "u.a ", "u.e", "u.s.w", "u.u", "u.ä", "usf", "usw", "v", "vgl", "vi", "vii", "viii", "vs", "x", "xi", "xii", "xiii", "xiv", "xix", "xv", "xvi", "xvii", "xviii", "xx", "z.b", "z.t", "z.z", "z.zt", "zt", "zzt", "Ä", "ä"]
6
+ STOP_WORDS = ["a", "ab", "aber", "ach", "acht", "achte", "achten", "achter", "achtes", "ag", "alle", "allein", "allem", "allen", "aller", "allerdings", "alles", "allgemeinen", "als", "also", "am", "an", "andere", "anderen", "andern", "anders", "au", "auch", "auf", "aus", "ausser", "ausserdem", "außer", "außerdem", "b", "bald", "bei", "beide", "beiden", "beim", "beispiel", "bekannt", "bereits", "besonders", "besser", "besten", "bin", "bis", "bisher", "bist", "c", "d", "d.h", "da", "dabei", "dadurch", "dafür", "dagegen", "daher", "dahin", "dahinter", "damals", "damit", "danach", "daneben", "dank", "dann", "daran", "darauf", "daraus", "darf", "darfst", "darin", "darum", "darunter", "darüber", "das", "dasein", "daselbst", "dass", "dasselbe", "davon", "davor", "dazu", "dazwischen", "daß", "dein", "deine", "deinem", "deiner", "dem", "dementsprechend", "demgegenüber", "demgemäss", "demgemäß", "demselben", "demzufolge", "den", "denen", "denn", "denselben", "der", "deren", "derjenige", "derjenigen", "dermassen", "dermaßen", "derselbe", "derselben", "des", "deshalb", "desselben", "dessen", "deswegen", "dich", "die", "diejenige", "diejenigen", "dies", "diese", "dieselbe", "dieselben", "diesem", "diesen", "dieser", "dieses", "dir", "doch", "dort", "drei", "drin", "dritte", "dritten", "dritter", "drittes", "du", "durch", "durchaus", "durfte", "durften", "dürfen", "dürft", "e", "eben", "ebenso", "ehrlich", "ei", "ei,", "eigen", "eigene", "eigenen", "eigener", "eigenes", "ein", "einander", "eine", "einem", "einen", "einer", "eines", "einige", "einigen", "einiger", "einiges", "einmal", "eins", "elf", "en", "ende", "endlich", "entweder", "er", "erst", "erste", "ersten", "erster", "erstes", "es", "etwa", "etwas", "euch", "euer", "eure", "f", "früher", "fünf", "fünfte", "fünften", "fünfter", "fünftes", "für", "g", "gab", "ganz", "ganze", "ganzen", "ganzer", "ganzes", "gar", "gedurft", "gegen", "gegenüber", "gehabt", "gehen", "geht", "gekannt", "gekonnt", "gemacht", "gemocht", "gemusst", "genug", "gerade", "gern", "gesagt", "geschweige", "gewesen", "gewollt", "geworden", "gibt", "ging", "gleich", "gott", "gross", "grosse", "grossen", "grosser", "grosses", "groß", "große", "großen", "großer", "großes", "gut", "gute", "guter", "gutes", "h", "habe", "haben", "habt", "hast", "hat", "hatte", "hatten", "hattest", "hattet", "heisst", "her", "heute", "hier", "hin", "hinter", "hoch", "hätte", "hätten", "i", "ich", "ihm", "ihn", "ihnen", "ihr", "ihre", "ihrem", "ihren", "ihrer", "ihres", "im", "immer", "in", "indem", "infolgedessen", "ins", "irgend", "ist", "j", "ja", "jahr", "jahre", "jahren", "je", "jede", "jedem", "jeden", "jeder", "jedermann", "jedermanns", "jedes", "jedoch", "jemand", "jemandem", "jemanden", "jene", "jenem", "jenen", "jener", "jenes", "jetzt", "k", "kam", "kann", "kannst", "kaum", "kein", "keine", "keinem", "keinen", "keiner", "kleine", "kleinen", "kleiner", "kleines", "kommen", "kommt", "konnte", "konnten", "kurz", "können", "könnt", "könnte", "l", "lang", "lange", "leicht", "leide", "lieber", "los", "m", "machen", "macht", "machte", "mag", "magst", "mahn", "man", "manche", "manchem", "manchen", "mancher", "manches", "mann", "mehr", "mein", "meine", "meinem", "meinen", "meiner", "meines", "mensch", "menschen", "mich", "mir", "mit", "mittel", "mochte", "mochten", "morgen", "muss", "musst", "musste", "mussten", "muß", "mußt", "möchte", "mögen", "möglich", "mögt", "müssen", "müsst", "müßt", "n", "na", "nach", "nachdem", "nahm", "natürlich", "neben", "nein", "neue", "neuen", "neun", "neunte", "neunten", "neunter", "neuntes", "nicht", "nichts", "nie", "niemand", "niemandem", "niemanden", "noch", "nun", "nur", "o", "ob", "oben", "oder", "offen", "oft", "ohne", "p", "q", "r", "recht", "rechte", "rechten", "rechter", "rechtes", "richtig", "rund", "s", "sa", "sache", "sagt", "sagte", "sah", "satt", "schlecht", "schon", "sechs", "sechste", "sechsten", "sechster", "sechstes", "sehr", "sei", "seid", "seien", "sein", "seine", "seinem", "seinen", "seiner", "seines", "seit", "seitdem", "selbst", "sich", "sie", "sieben", "siebente", "siebenten", "siebenter", "siebentes", "sind", "so", "solang", "solche", "solchem", "solchen", "solcher", "solches", "soll", "sollen", "sollst", "sollt", "sollte", "sollten", "sondern", "sonst", "soweit", "sowie", "später", "statt", "t", "tag", "tage", "tagen", "tat", "teil", "tel", "tritt", "trotzdem", "tun", "u", "uhr", "um", "und", "und?", "uns", "unser", "unsere", "unserer", "unter", "v", "vergangenen", "viel", "viele", "vielem", "vielen", "vielleicht", "vier", "vierte", "vierten", "vierter", "viertes", "vom", "von", "vor", "w", "wahr?", "wann", "war", "waren", "wart", "warum", "was", "wegen", "weil", "weit", "weiter", "weitere", "weiteren", "weiteres", "welche", "welchem", "welchen", "welcher", "welches", "wem", "wen", "wenig", "wenige", "weniger", "weniges", "wenigstens", "wenn", "wer", "werde", "werden", "werdet", "weshalb", "wessen", "wie", "wieder", "wieso", "will", "willst", "wir", "wird", "wirklich", "wirst", "wo", "woher", "wohin", "wohl", "wollen", "wollt", "wollte", "wollten", "worden", "wurde", "wurden", "während", "währenddem", "währenddessen", "wäre", "würde", "würden", "x", "y", "z", "z.b", "zehn", "zehnte", "zehnten", "zehnter", "zehntes", "zeit", "zu", "zuerst", "zugleich", "zum", "zunächst", "zur", "zurück", "zusammen", "zwanzig", "zwar", "zwei", "zweite", "zweiten", "zweiter", "zweites", "zwischen", "zwölf", "über", "überhaupt", "übrigens"]
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module PragmaticTokenizer
2
+ module Languages
3
+ module Dutch
4
+ include Languages::Common
5
+ ABBREVIATIONS = []
6
+ STOP_WORDS = ["aan", "af", "al", "als", "bij", "dan", "dat", "die", "dit", "een", "en", "er", "had", "heb", "hem", "het", "hij", "hoe", "hun", "ik", "in", "is", "je", "kan", "me", "men", "met", "mij", "nog", "nu", "of", "ons", "ook", "te", "tot", "uit", "van", "was", "wat", "we", "wel", "wij", "zal", "ze", "zei", "zij", "zo", "zou", "aan", "aangaande", "aangezien", "achter", "achterna", "afgelopen", "aldaar", "aldus", "alhoewel", "alias", "alle", "allebei", "alleen", "alsnog", "altijd", "altoos", "ander", "andere", "anders", "anderszins", "behalve", "behoudens", "beide", "beiden", "ben", "beneden", "bent", "bepaald", "betreffende", "binnen", "binnenin", "boven", "bovenal", "bovendien", "bovengenoemd", "bovenstaand", "bovenvermeld", "buiten", "daar", "daarheen", "daarin", "daarna", "daarnet", "daarom", "daarop", "daarvanlangs", "de", "dikwijls", "door", "doorgaand", "dus", "echter", "eer", "eerdat", "eerder", "eerlang", "eerst", "elk", "elke", "enig", "enigszins", "enkel", "erdoor", "even", "eveneens", "evenwel", "gauw", "gedurende", "geen", "gehad", "gekund", "geleden", "gelijk", "gemoeten", "gemogen", "geweest", "gewoon", "gewoonweg", "haar", "hadden", "hare", "hebben", "hebt", "heeft", "hen", "hierbeneden", "hierboven", "hoewel", "hunne", "ikzelf", "inmiddels", "inzake", "jezelf", "jij", "jijzelf", "jou", "jouw", "jouwe", "juist", "jullie", "klaar", "kon", "konden", "krachtens", "kunnen", "kunt", "later", "liever", "maar", "mag", "meer", "mezelf", "mijn", "mijnent", "mijner", "mijzelf", "misschien", "mocht", "mochten", "moest", "moesten", "moet", "moeten", "mogen", "na", "naar", "nadat", "net", "niet", "noch", "nogal", "ofschoon", "om", "omdat", "omhoog", "omlaag", "omstreeks", "omtrent", "omver", "onder", "ondertussen", "ongeveer", "onszelf", "onze", "op", "opnieuw", "opzij", "over", "overeind", "overigens", "pas", "precies", "reeds", "rond", "rondom", "sedert", "sinds", "sindsdien", "slechts", "sommige", "spoedig", "steeds", "tamelijk", "tenzij", "terwijl", "thans", "tijdens", "toch", "toen", "toenmaals", "toenmalig", "totdat", "tussen", "uitgezonderd", "vaakwat", "vandaan", "vanuit", "vanwege", "veeleer", "verder", "vervolgens", "vol", "volgens", "voor", "vooraf", "vooral", "vooralsnog", "voorbij", "voordat", "voordezen", "voordien", "voorheen", "voorop", "vooruit", "vrij", "vroeg", "waar", "waarom", "wanneer", "want", "waren", "weer", "weg", "wegens", "weldra", "welk", "welke", "wie", "wiens", "wier", "wijzelf", "zelfs", "zichzelf", "zijn", "zijne", "zodra", "zonder", "zouden", "zowat", "zulke", "zullen", "zult", "worden", "wordt", "deze"]
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,91 @@
1
+ module PragmaticTokenizer
2
+ module Languages
3
+ module English
4
+ include Languages::Common
5
+ ABBREVIATIONS = ["adj", "adm", "adv", "al", "ala", "alta", "apr", "arc", "ariz", "ark", "art", "assn", "asst", "attys", "aug", "ave", "bart", "bld", "bldg", "blvd", "brig", "bros", "btw", "cal", "calif", "capt", "cl", "cmdr", "co", "col", "colo", "comdr", "con", "conn", "corp", "cpl", "cres", "ct", "d.phil", "dak", "dec", "del", "dept", "det", "dist", "dr", "dr.phil", "dr.philos", "drs", "e.g", "ens", "esp", "esq", "etc", "exp", "expy", "ext", "feb", "fed", "fla", "ft", "fwy", "fy", "ga", "gen", "gov", "hon", "hosp", "hr", "hway", "hwy", "i.e", "ia", "id", "ida", "ill", "inc", "ind", "ing", "insp", "is", "jan", "jr", "jul", "jun", "kan", "kans", "ken", "ky", "la", "lt", "ltd", "maj", "man", "mar", "mass", "may", "md", "me", "med", "messrs", "mex", "mfg", "mich", "min", "minn", "miss", "mlle", "mm", "mme", "mo", "mont", "mr", "mrs", "ms", "msgr", "mssrs", "mt", "mtn", "neb", "nebr", "nev", "no", "nos", "nov", "nr", "oct", "ok", "okla", "ont", "op", "ord", "ore", "p", "pa", "pd", "pde", "penn", "penna", "pfc", "ph", "ph.d", "pl", "plz", "pp", "prof", "pvt", "que", "rd", "ref", "rep", "reps", "res", "rev", "rt", "sask", "sec", "sen", "sens", "sep", "sept", "sfc", "sgt", "sr", "st", "supt", "surg", "tce", "tenn", "tex", "u.s", "univ", "usafa", "ut", "v", "va", "ver", "vs", "vt", "wash", "wis", "wisc", "wy", "wyo", "yuk"]
6
+ STOP_WORDS = ["&#;f", "'ll", "'ve", "+//", "-/+", "</li>", "</p>", "</td>", "<br", "<br/>", "<br/><br/>", "<li>", "<p>", "<sup></sup>", "<sup></sup></li>", "<td", "<td>", "___", "____", "_____", "______", "_______", "________", "_________", "__________", "___________", "____________", "_____________", "______________", "a", "a's", "able", "about", "above", "abroad", "abst", "accordance", "according", "accordingly", "across", "act", "actually", "added", "adj", "adopted", "affected", "affecting", "affects", "after", "afterwards", "again", "against", "ago", "ah", "ahead", "ain't", "all", "allow", "allows", "almost", "alone", "along", "alongside", "already", "also", "although", "always", "am", "amid", "amidst", "among", "amongst", "amoungst", "amount", "an", "and", "announce", "another", "any", "anybody", "anyhow", "anymore", "anyone", "anything", "anyway", "anyways", "anywhere", "apart", "apparently", "appear", "appreciate", "appropriate", "approximately", "are", "aren", "aren't", "arent", "arise", "around", "as", "aside", "ask", "asking", "associated", "at", "auth", "available", "away", "awfully", "b", "back", "backward", "backwards", "be", "became", "because", "become", "becomes", "becoming", "been", "before", "beforehand", "begin", "beginning", "beginnings", "begins", "behind", "being", "believe", "below", "beside", "besides", "best", "better", "between", "beyond", "bill", "biol", "both", "bottom", "brief", "briefly", "but", "by", "c", "c'mon", "c's", "ca", "call", "came", "can", "can't", "cannot", "cant", "caption", "cause", "causes", "certain", "certainly", "changes", "class=", "clearly", "co", "co.", "com", "come", "comes", "computer", "con", "concerning", "consequently", "consider", "considering", "contain", "containing", "contains", "corresponding", "could", "couldn't", "couldnt", "course", "cry", "currently", "d", "dare", "daren't", "date", "de", "definitely", "describe", "described", "despite", "detail", "did", "didn't", "different", "directly", "do", "does", "doesn't", "doing", "don't", "done", "down", "downwards", "due", "during", "e", "each", "ed", "edu", "effect", "eg", "eight", "eighty", "either", "eleven", "else", "elsewhere", "empty", "end", "ending", "enough", "entirely", "especially", "et", "et-al", "etc", "even", "ever", "evermore", "every", "everybody", "everyone", "everything", "everywhere", "ex", "exactly", "example", "except", "f", "fairly", "far", "farther", "few", "fewer", "ff", "fifteen", "fifth", "fify", "fill", "find", "fire", "first", "five", "fix", "followed", "following", "follows", "for", "forever", "former", "formerly", "forth", "forty", "forward", "found", "four", "from", "front", "full", "further", "furthermore", "g", "gave", "get", "gets", "getting", "give", "given", "gives", "giving", "go", "goes", "going", "gone", "got", "gotten", "greetings", "h", "had", "hadn't", "half", "happens", "hardly", "has", "hasn't", "hasnt", "have", "haven't", "having", "he", "he'd", "he'll", "he's", "hed", "hello", "help", "hence", "her", "here", "here's", "hereafter", "hereby", "herein", "heres", "hereupon", "hers", "herself", "hes", "hi", "hid", "him", "himself", "his", "hither", "home", "hopefully", "how", "how's", "howbeit", "however", "http", "https", "hundred", "i", "i'd", "i'll", "i'm", "i've", "id", "ie", "if", "ignored", "im", "immediate", "immediately", "importance", "important", "in", "inasmuch", "inc", "inc.", "indeed", "index", "indicate", "indicated", "indicates", "information", "ing", "inner", "inside", "insofar", "instead", "interest", "into", "invention", "inward", "is", "isn't", "it", "it'd", "it'll", "it's", "itd", "its", "itself", "j", "just", "k", "keep", "keeps", "kept", "keys", "kg", "km", "know", "known", "knows", "l", "largely", "last", "lately", "later", "latter", "latterly", "least", "less", "lest", "let", "let's", "lets", "like", "liked", "likely", "likewise", "line", "little", "look", "looking", "looks", "low", "lower", "ltd", "m", "made", "mainly", "make", "makes", "many", "may", "maybe", "mayn't", "me", "mean", "means", "meantime", "meanwhile", "merely", "mg", "might", "mightn't", "mill", "million", "mine", "minus", "miss", "ml", "more", "moreover", "most", "mostly", "move", "mr", "mrs", "much", "mug", "must", "mustn't", "my", "myself", "n", "na", "name", "namely", "nay", "nd", "near", "nearly", "necessarily", "necessary", "need", "needn't", "needs", "neither", "never", "neverf", "neverless", "nevertheless", "new", "next", "nine", "ninety", "no", "no-one", "nobody", "non", "none", "nonetheless", "noone", "nor", "normally", "nos", "not", "noted", "nothing", "notwithstanding", "novel", "now", "nowhere", "o", "obtain", "obtained", "obviously", "of", "off", "often", "oh", "ok", "okay", "old", "omitted", "on", "once", "one", "one's", "ones", "only", "onto", "opposite", "or", "ord", "other", "others", "otherwise", "ought", "oughtn't", "our", "ours", "ours", "ourselves", "out", "outside", "over", "overall", "owing", "own", "p", "page", "pages", "part", "particular", "particularly", "past", "per", "perhaps", "placed", "please", "plus", "poorly", "possible", "possibly", "potentially", "pp", "predominantly", "present", "presumably", "previously", "primarily", "probably", "promptly", "proud", "provided", "provides", "put", "q", "que", "quickly", "quite", "qv", "r", "ran", "rather", "rd", "re", "readily", "really", "reasonably", "recent", "recently", "ref", "refs", "regarding", "regardless", "regards", "related", "relatively", "research", "respectively", "resulted", "resulting", "results", "right", "round", "run", "s", "said", "same", "saw", "say", "saying", "says", "sec", "second", "secondly", "section", "see", "seeing", "seem", "seemed", "seeming", "seems", "seen", "self", "selves", "sensible", "sent", "serious", "seriously", "seven", "several", "shall", "shan't", "she", "she'd", "she'll", "she's", "shed", "shes", "should", "shouldn't", "show", "showed", "shown", "showns", "shows", "side", "significant", "significantly", "similar", "similarly", "since", "sincere", "six", "sixty", "slightly", "so", "some", "somebody", "someday", "somehow", "someone", "somethan", "something", "sometime", "sometimes", "somewhat", "somewhere", "soon", "sorry", "specifically", "specified", "specify", "specifying", "state", "states", "still", "stop", "strongly", "sub", "substantially", "successfully", "such", "sufficiently", "suggest", "sup", "sure", "system", "t", "t's", "take", "taken", "taking", "tell", "ten", "tends", "th", "than", "thank", "thanks", "thanx", "that", "that'll", "that's", "that've", "thats", "the", "their", "theirs", "them", "themselves", "then", "thence", "there", "there'd", "there'll", "there're", "there's", "there've", "thereafter", "thereby", "thered", "therefore", "therein", "thereof", "therere", "theres", "thereto", "thereupon", "these", "they", "they'd", "they'll", "they're", "they've", "theyd", "theyre", "thick", "thin", "thing", "things", "think", "third", "thirty", "this", "thorough", "thoroughly", "those", "thou", "though", "thoughh", "thousand", "three", "throug", "through", "throughout", "thru", "thus", "til", "till", "tip", "to", "together", "too", "took", "top", "toward", "towards", "tried", "tries", "truly", "try", "trying", "ts", "twelve", "twenty", "twice", "two", "u", "un", "under", "underneath", "undoing", "unfortunately", "unless", "unlike", "unlikely", "until", "unto", "up", "upon", "ups", "upwards", "us", "use", "used", "useful", "usefully", "usefulness", "uses", "using", "usually", "uucp", "v", "value", "various", "versus", "very", "via", "viz", "vol", "vols", "vs", "w", "want", "wants", "was", "wasn't", "way", "we", "we'd", "we'll", "we're", "we've", "wed", "welcome", "well", "went", "were", "weren't", "what", "what'll", "what's", "what've", "whatever", "whats", "when", "when's", "whence", "whenever", "where", "where's", "whereafter", "whereas", "whereby", "wherein", "wheres", "whereupon", "wherever", "whether", "which", "whichever", "while", "whilst", "whim", "whither", "who", "who'd", "who'll", "who's", "whod", "whoever", "whole", "whom", "whomever", "whos", "whose", "why", "why's", "widely", "will", "willing", "wish", "with", "within", "without", "won't", "wonder", "words", "world", "would", "wouldn't", "www", "x", "y", "yes", "yet", "you", "you'd", "you'll", "you're", "you've", "youd", "your", "youre", "yours", "yourself", "yourselves", "z", "zero"]
7
+ CONTRACTIONS = {
8
+ "i'm" => "I am",
9
+ "i'll" => "I will",
10
+ "i'd" => "I would",
11
+ "i've" => "I have",
12
+ "you're" => "you are",
13
+ "you'll" => "you will",
14
+ "you'd" => "you would",
15
+ "you've" => "you have",
16
+ "he's" => "he is",
17
+ "he'll" => "he will",
18
+ "he'd" => "he would",
19
+ "she's" => "she is",
20
+ "she'll" => "she will",
21
+ "she'd" => "she would",
22
+ "it's" => "it is",
23
+ "'tis" => "it is",
24
+ "it'll" => "it will",
25
+ "it'd" => "it would",
26
+ "we're" => "we are",
27
+ "we'll" => "we will",
28
+ "we'd" => "we would",
29
+ "we've" => "we have",
30
+ "they're" => "they are",
31
+ "they'll" => "they will",
32
+ "they'd" => "they would",
33
+ "they've" => "they have",
34
+ "that's" => "that is",
35
+ "that'll" => "that will",
36
+ "that'd" => "that would",
37
+ "who's" => "who is",
38
+ "who'll" => "who will",
39
+ "who'd" => "who would",
40
+ "what's" => "what is",
41
+ "what're" => "what are",
42
+ "what'll" => "what will",
43
+ "what'd" => "what would",
44
+ "where's" => "where is",
45
+ "where'll" => "where will",
46
+ "where'd" => "where would",
47
+ "when's" => "when is",
48
+ "when'll" => "when will",
49
+ "when'd" => "when would",
50
+ "why's" => "why is",
51
+ "why'll" => "why will",
52
+ "why'd" => "why would",
53
+ "how's" => "how is",
54
+ "how'll" => "how will",
55
+ "how'd" => "how would",
56
+ "she'd've" => "she would have",
57
+ "'tisn't" => "it is not",
58
+ "isn't" => "is not",
59
+ "aren't" => "are not",
60
+ "wasn't" => "was not",
61
+ "weren't" => "were not",
62
+ "haven't" => "have not",
63
+ "hasn't" => "has not",
64
+ "hadn't" => "had not",
65
+ "won't" => "will not",
66
+ "wouldn't" => "would not",
67
+ "don't" => "do not",
68
+ "doesn't" => "does not",
69
+ "didn't" => "did not",
70
+ "can't" => "cannot",
71
+ "couldn't" => "could not",
72
+ "shouldn't" => "should not",
73
+ "mightn't" => "might not",
74
+ "mustn't" => "must not",
75
+ "would've" => "would have",
76
+ "should've" => "should have",
77
+ "could've" => "could have",
78
+ "might've" => "might have",
79
+ "must've" => "must have",
80
+ "o'" => "of",
81
+ "o'clock" => "of the clock",
82
+ "ma'am" => "madam",
83
+ "ne'er-do-well" => "never-do-well",
84
+ "cat-o'-nine-tails" => "cat-of-nine-tails",
85
+ "jack-o'-lantern" => "jack-of-the-lantern",
86
+ "will-o'-the-wisp" => "will-of-the-wisp",
87
+ "'twas" => "it was"
88
+ }
89
+ end
90
+ end
91
+ end