Merge pull request #865 from banglakit/bn

Add basic Bengali language support
This commit is contained in:
Matthew Honnibal 2017-03-01 15:25:58 +01:00 committed by GitHub
commit 0f74002a26
6 changed files with 120 additions and 0 deletions

View File

@ -32,6 +32,7 @@ PACKAGES = [
'spacy.nl',
'spacy.sv',
'spacy.fi',
'spacy.bn',
'spacy.language_data',
'spacy.serialize',
'spacy.syntax',

View File

@ -14,6 +14,7 @@ from . import pt
from . import nl
from . import sv
from . import fi
from . import bn
try:
basestring
@ -32,6 +33,7 @@ set_lang_class(zh.Chinese.lang, zh.Chinese)
set_lang_class(nl.Dutch.lang, nl.Dutch)
set_lang_class(sv.Swedish.lang, sv.Swedish)
set_lang_class(fi.Finnish.lang, fi.Finnish)
set_lang_class(bn.Bengali.lang, bn.Bengali)

22
spacy/bn/__init__.py Normal file
View File

@ -0,0 +1,22 @@
# encoding: utf8
from __future__ import unicode_literals, print_function
from ..language import Language
from ..attrs import LANG
from .language_data import *
class Bengali(Language):
lang = 'bn'
class Defaults(Language.Defaults):
lex_attr_getters = dict(Language.Defaults.lex_attr_getters)
lex_attr_getters[LANG] = lambda text: 'bn'
tokenizer_exceptions = TOKENIZER_EXCEPTIONS
stop_words = STOP_WORDS
prefixes = tuple(TOKENIZER_PREFIXES)
suffixes = tuple(TOKENIZER_SUFFIXES)
infixes = tuple(TOKENIZER_INFIXES)

18
spacy/bn/language_data.py Normal file
View File

@ -0,0 +1,18 @@
# encoding: utf8
from __future__ import unicode_literals
from spacy.language_data import strings_to_exc, update_exc
from .punctuation import *
from .stop_words import STOP_WORDS
from .. import language_data as base
STOP_WORDS = set(STOP_WORDS)
TOKENIZER_EXCEPTIONS = strings_to_exc(base.EMOTICONS)
update_exc(TOKENIZER_EXCEPTIONS, strings_to_exc(base.ABBREVIATIONS))
TOKENIZER_PREFIXES = TOKENIZER_PREFIXES
TOKENIZER_SUFFIXES = TOKENIZER_SUFFIXES
TOKENIZER_INFIXES = TOKENIZER_INFIXES
__all__ = ["TOKENIZER_EXCEPTIONS", "STOP_WORDS", "TOKENIZER_PREFIXES", "TOKENIZER_SUFFIXES", "TOKENIZER_INFIXES"]

45
spacy/bn/punctuation.py Normal file
View File

@ -0,0 +1,45 @@
# encoding: utf8
from __future__ import unicode_literals
from ..language_data.punctuation import ALPHA_LOWER, LIST_ELLIPSES, QUOTES, ALPHA_UPPER, LIST_QUOTES, UNITS, \
CURRENCY, LIST_PUNCT, ALPHA, _QUOTES
CURRENCY_SYMBOLS = r"\$ ¢ £ € ¥ ฿ ৳"
_PUNCT = '। ॥'
LIST_PUNCT.extend(_PUNCT.strip().split())
TOKENIZER_PREFIXES = (
[r'\+'] +
LIST_PUNCT +
LIST_ELLIPSES +
LIST_QUOTES
)
TOKENIZER_SUFFIXES = (
LIST_PUNCT +
LIST_ELLIPSES +
LIST_QUOTES +
[
r'(?<=[0-9])\+',
r'(?<=°[FfCcKk])\.',
r'(?<=[0-9])(?:{c})'.format(c=CURRENCY),
r'(?<=[0-9])(?:{u})'.format(u=UNITS),
r'(?<=[{al}{p}{c}(?:{q})])\.'.format(al=ALPHA_LOWER, p=r'%²\-\)\]\+', q=QUOTES, c=CURRENCY_SYMBOLS),
r'(?<=[{al})])-e'.format(al=ALPHA_LOWER)
]
)
TOKENIZER_INFIXES = (
LIST_ELLIPSES +
[
r'(?<=[{al}])\.(?=[{au}])'.format(al=ALPHA_LOWER, au=ALPHA_UPPER),
r'(?<=[{a}]),(?=[{a}])'.format(a=ALPHA),
r'(?<=[{a}"])[:<>=](?=[{a}])'.format(a=ALPHA),
r'(?<=[{a}])--(?=[{a}])'.format(a=ALPHA),
r'(?<=[{a}]),(?=[{a}])'.format(a=ALPHA),
r'(?<=[{a}])([{q}\)\]\(\[])(?=[\-{a}])'.format(a=ALPHA, q=_QUOTES.replace("'", "").strip().replace(" ", "")),
]
)
__all__ = ["TOKENIZER_PREFIXES", "TOKENIZER_SUFFIXES", "TOKENIZER_INFIXES"]

32
spacy/bn/stop_words.py Normal file
View File

@ -0,0 +1,32 @@
# encoding: utf8
from __future__ import unicode_literals
STOP_WORDS = set("""
অতএব অথচ অথব অন অন অন অন অনতত অন অবধি অবশ অর
আই আগ আগ আগ আছ আজ আদযভ আপন আপনি আব আমর আম আম আম আমি আর আরও
ইতি ইহ উচি উনি উপর উপর
এই এক একই একজন একট একটি একব এক এখন এখনও এখ এখ এট এট এটি এত এতট এত এদ এব এব এমন এমনক এর এর এল এস এস
ওই ওক ওখ ওদ ওর ওর
কখনও কত কথ কব কয কযকটি করছ করছ করত করব করব করল করল কর কর কর কর করি করি করি করি কর কর করি কর কর কর উক রও রণ ি ি ি ি ি উই নও
ি ি ি
চল
ি ি
জন জনক জন জন জনযওজ নত ি ি
ি ি তখন তত তথ তব তব রপর হল িনঐ িি িি ি মন
কব কব
ি ি ি ি ি ি ি ি ওয ওয খত
ধর ধর
নয ি ি ি ি ি ি ি ি ওয ওয নয়
পক পর পর পর পর পরযন ওয ি রতি রভি
ফল ি
বছর বদল বর বলত বলল বলল বল বল বল বল বস বহ ি িি ি িষযি যবহ
মত মত মত মধযভ মধ মধ মধ মন যম
যখন যত যতট যথ যদি যদি ওয ওয িি মন
রকম রয
সঙ সঙ সব সব সমস সমরতি সময় সহ সহি তর ি পষ বয
হইত হইব হইয হওয হওয হওয হচ হত হত হত হন হব হব হয হয হযি হয হয হযি হয হয হল হল হল হল হল ি ি হয় হয় হয়
""".split())