2018-07-10 11:48:38 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
|
|
|
|
from ...attrs import LIKE_NUM
|
|
|
|
|
2018-08-14 00:31:32 +00:00
|
|
|
_num_words = ['μηδέν', 'ένας', 'δυο', 'δυό', 'τρεις', 'τέσσερις', 'πέντε',
|
|
|
|
'έξι', 'εφτά', 'επτά', 'οκτώ', 'οχτώ',
|
|
|
|
'εννιά', 'εννέα', 'δέκα', 'έντεκα', 'ένδεκα', 'δώδεκα',
|
|
|
|
'δεκατρείς', 'δεκατέσσερις', 'δεκαπέντε', 'δεκαέξι', 'δεκαεπτά',
|
|
|
|
'δεκαοχτώ', 'δεκαεννέα', 'δεκαεννεα', 'είκοσι', 'τριάντα',
|
|
|
|
'σαράντα', 'πενήντα', 'εξήντα', 'εβδομήντα', 'ογδόντα',
|
|
|
|
'ενενήντα', 'εκατό', 'διακόσιοι', 'διακόσοι', 'τριακόσιοι',
|
|
|
|
'τριακόσοι', 'τετρακόσιοι', 'τετρακόσοι', 'πεντακόσιοι',
|
|
|
|
'πεντακόσοι', 'εξακόσιοι', 'εξακόσοι', 'εφτακόσιοι', 'εφτακόσοι',
|
|
|
|
'επτακόσιοι', 'επτακόσοι', 'οχτακόσιοι', 'οχτακόσοι',
|
|
|
|
'οκτακόσιοι', 'οκτακόσοι', 'εννιακόσιοι', 'χίλιοι', 'χιλιάδα',
|
|
|
|
'εκατομμύριο', 'δισεκατομμύριο', 'τρισεκατομμύριο', 'τετράκις',
|
|
|
|
'πεντάκις', 'εξάκις', 'επτάκις', 'οκτάκις', 'εννεάκις', 'ένα',
|
|
|
|
'δύο', 'τρία', 'τέσσερα', 'δις', 'χιλιάδες']
|
2018-07-10 11:48:38 +00:00
|
|
|
|
|
|
|
|
|
|
|
def like_num(text):
|
2018-10-01 08:49:14 +00:00
|
|
|
if text.startswith(('+', '-', '±', '~')):
|
|
|
|
text = text[1:]
|
2018-07-10 11:48:38 +00:00
|
|
|
text = text.replace(',', '').replace('.', '')
|
|
|
|
if text.isdigit():
|
|
|
|
return True
|
|
|
|
if text.count('/') == 1:
|
|
|
|
num, denom = text.split('/')
|
|
|
|
if num.isdigit() and denom.isdigit():
|
|
|
|
return True
|
|
|
|
if text.count('^') == 1:
|
|
|
|
num, denom = text.split('^')
|
|
|
|
if num.isdigit() and denom.isdigit():
|
|
|
|
return True
|
|
|
|
if text.lower() in _num_words or text.lower().split(' ')[0] in _num_words:
|
|
|
|
return True
|
|
|
|
if text in _num_words:
|
|
|
|
return True
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
|
LEX_ATTRS = {
|
|
|
|
LIKE_NUM: like_num
|
|
|
|
}
|