Split words by spaces rather than regexp
Browse files- README.md +1 -1
- sbert-punc-case-ru/sbertpunccase.py +4 -20
README.md
CHANGED
@@ -11,7 +11,7 @@ license: apache-2.0
|
|
11 |
|
12 |
SbertPuncCase - модель восстановления пунктуации и регистра для русского языка. Модель способна расставлять точки, запятые и знаки вопроса;
|
13 |
определять регистр - слово в нижнем регистре, слово с первой буквой в верхнем регистре, слово в верхнем регистре.
|
14 |
-
Модель разработана для восстановления
|
15 |
В основу модели лег [sbert_large_nlu_ru](https://huggingface.co/sberbank-ai/sbert_large_nlu_ru).
|
16 |
В качестве обучающих данных использованы текстовые расшифровки интервью.
|
17 |
|
|
|
11 |
|
12 |
SbertPuncCase - модель восстановления пунктуации и регистра для русского языка. Модель способна расставлять точки, запятые и знаки вопроса;
|
13 |
определять регистр - слово в нижнем регистре, слово с первой буквой в верхнем регистре, слово в верхнем регистре.
|
14 |
+
Модель разработана для восстановления текста после распознавания речи, поэтому работает со строками в нижнем регистре.
|
15 |
В основу модели лег [sbert_large_nlu_ru](https://huggingface.co/sberbank-ai/sbert_large_nlu_ru).
|
16 |
В качестве обучающих данных использованы текстовые расшифровки интервью.
|
17 |
|
sbert-punc-case-ru/sbertpunccase.py
CHANGED
@@ -6,26 +6,12 @@ import torch.nn as nn
|
|
6 |
import numpy as np
|
7 |
|
8 |
from transformers import AutoTokenizer, AutoModelForTokenClassification
|
9 |
-
import re
|
10 |
-
import string
|
11 |
-
|
12 |
-
|
13 |
-
TOKEN_RE = re.compile(r'-?\d*\.\d+|[a-zа-яё]+|-?[\d\+\(\)\-]+|\S', re.I)
|
14 |
-
"""
|
15 |
-
Регулярка, для того чтобы выделять в отдельные токены знаки препинания, числа и слова. А именно:
|
16 |
-
- Числа с плавающей точкой вида 123.23 выделяются в один токен. Десятичным разделителем рассматривается только точка
|
17 |
-
- Число может быть отрицательным: иметь знак -123.4
|
18 |
-
- Целой части числа может вовсе не быть: последовательности -0.15 и −.15 означают одно и то же число.
|
19 |
-
- При этом числа с нулевой дробной частью не допускаются: строка "12345." будет разделена на два токена "12345" и "."
|
20 |
-
- Идущие подряд знаки препинания выделяются каждый в отдельный токен.
|
21 |
-
- Телефонные номера выделяются в один токен +7(999)164-20-69
|
22 |
-
- Множество букв в словах ограничивается только кириллическим и англ алфавитом (33 буквы и 26 cоотв).
|
23 |
-
"""
|
24 |
|
25 |
# Прогнозируемые знаки препинания
|
26 |
PUNK_MAPPING = {'.': 'PERIOD', ',': 'COMMA', '?': 'QUESTION'}
|
27 |
|
28 |
-
# Прогнозируемый регистр LOWER - нижний регистр, UPPER - верхний регистр для первого символа,
|
|
|
29 |
LABELS_CASE = ['LOWER', 'UPPER', 'UPPER_TOTAL']
|
30 |
# Добавим в пунктуацию метку O означающий отсутсвие пунктуации
|
31 |
LABELS_PUNC = ['O'] + list(PUNK_MAPPING.values())
|
@@ -107,10 +93,8 @@ class SbertPuncCase(nn.Module):
|
|
107 |
def punctuate(self, text):
|
108 |
text = text.strip().lower()
|
109 |
|
110 |
-
# Разобъем предложение на слова
|
111 |
-
|
112 |
-
# Удалим знаки препинания
|
113 |
-
words = [token for token in tokens if token not in string.punctuation]
|
114 |
|
115 |
tokenizer_output = self.tokenizer(words, is_split_into_words=True)
|
116 |
|
|
|
6 |
import numpy as np
|
7 |
|
8 |
from transformers import AutoTokenizer, AutoModelForTokenClassification
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
|
10 |
# Прогнозируемые знаки препинания
|
11 |
PUNK_MAPPING = {'.': 'PERIOD', ',': 'COMMA', '?': 'QUESTION'}
|
12 |
|
13 |
+
# Прогнозируемый регистр LOWER - нижний регистр, UPPER - верхний регистр для первого символа,
|
14 |
+
# UPPER_TOTAL - верхний регистр для всех символов
|
15 |
LABELS_CASE = ['LOWER', 'UPPER', 'UPPER_TOTAL']
|
16 |
# Добавим в пунктуацию метку O означающий отсутсвие пунктуации
|
17 |
LABELS_PUNC = ['O'] + list(PUNK_MAPPING.values())
|
|
|
93 |
def punctuate(self, text):
|
94 |
text = text.strip().lower()
|
95 |
|
96 |
+
# Разобъем предложение на слова
|
97 |
+
words = text.split()
|
|
|
|
|
98 |
|
99 |
tokenizer_output = self.tokenizer(words, is_split_into_words=True)
|
100 |
|