Permalink
Browse files

basic pymorphy2.tokenizers module

  • Loading branch information...
1 parent 34df59e commit 9a20640cdca3b31727be0c41e779869bcbe6456e @kmike committed Apr 4, 2013
Showing with 41 additions and 2 deletions.
  1. +3 −0 docs/misc/api_reference.rst
  2. +0 −2 docs/user/index.rst
  3. +10 −0 pymorphy2/tokenizers.py
  4. +28 −0 tests/test_tokenizers.py
@@ -43,6 +43,9 @@ Utilities for OpenCorpora Dictionaries
Various Utilities
-----------------
+.. automodule:: pymorphy2.tokenizers
+ :members:
+
.. automodule:: pymorphy2.shapes
:members:
View
@@ -1,5 +1,3 @@
-.. _misc:
-
============
Документация
============
View
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+import re
+GROUPING_SPACE_REGEX = re.compile('([^\w_-]|[+])', re.U)
+
+def word_tokenize(text):
+ """
+ Split text into tokens. Don't split by hyphen.
+ """
+ return [t for t in GROUPING_SPACE_REGEX.split(text)
+ if t and not t.isspace()]
View
@@ -0,0 +1,28 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import, unicode_literals
+from pymorphy2.tokenizers import word_tokenize
+
+class TestSplit:
+
+ def test_split_simple(self):
+ assert word_tokenize('Мама мыла раму') == ['Мама', 'мыла', 'раму']
+ assert word_tokenize('Постой, паровоз!') == ['Постой', ',', 'паровоз', '!']
+
+ def test_split_hyphen(self):
+ assert word_tokenize('Ростов-на-Дону') == ['Ростов-на-Дону']
+ assert word_tokenize('Ура - победа') == ['Ура', '-', 'победа']
+
+ def test_split_signs(self):
+ assert word_tokenize('a+b=c_1') == ['a','+','b','=','c_1']
+
+ def test_exctract_words(self):
+ text = '''Это отразилось: на количественном,и на качествен_ном
+ - росте карельско-финляндского сотрудничества - офигеть! кони+лошади=масло.
+ -сказал кто-то --нет--'''
+
+ assert word_tokenize(text) == [
+ 'Это', 'отразилось', ':', 'на', 'количественном', ',', 'и', 'на',
+ 'качествен_ном', '-', 'росте', 'карельско-финляндского',
+ 'сотрудничества', '-', 'офигеть', '!', 'кони', '+', 'лошади',
+ '=', 'масло', '.', '-сказал', 'кто-то', '--нет--',
+ ]

0 comments on commit 9a20640

Please sign in to comment.