German_transliterate é um módulo Python para limpar e transliterar (ou seja, normalizar) o texto alemão, incluindo abreviações, números, registros de data e hora etc. Ele pode ser usado para limpar o texto bagunçado (por exemplo, mapear as codificações de unicode peculiares para ASCII) ou substituir as abreviações comuns em texto em combinação por várias tarefas de minamento de texto.
No entanto, é particularmente útil para o pré-processamento de texto em fala (TTS) (tanto em treinamento quanto na inferência) e possui recursos para suportar a codificação fonêmica dos resultados (por exemplo, com Espeak-NG) posteriormente como o próximo passo no pipeline de processamento.
IS foi aplicado com sucesso ao pré-processamento com o Mozilla TTS em combinação com os fonemas espeak-ng como dados de entrada para o pipeline de treinamento e inferência.
Este trabalho é licenciado sob a Licença Internacional Creative Commons Attribution 4.0. Para visualizar uma cópia desta licença, visite http://creativecommons.org/license/by/4.0/ ou envie uma carta ao Creative Commons, PO Box 1866, Mountain View, CA 94042, EUA.
Para fornecer atribuição ou citar este trabalho, use o seguinte snippet de texto:
german_transliterate, Copyright 2020 by repodiac, see https://github.com/repodiac for updates and further information
0.1.3 - Algumas bugs em várias operações: weekday , month , amount_money e acrônimos, também algumas coisas menores corrigidas aqui e ali ( atualização altamente recomendada )0.1.2 -removeu os seguintes OPs da lista de OPs padrão, pois (como mencionado na documentação abaixo) eles são altamente propensos a erros (muitos falsos positivos). Você ainda pode usá -los através de adicioná -los explicitamente à lista transliterate_ops=[...] . Os OPs removidos são:monthweekdaymath_symbol0.1.1 - Interface de linha de comando adicionada para uso padrão (sem codificação de fonemas e coisas experimentais deixadas de fora)release 0.1 - Liberação inicial do software, ainda muitos ToDo e alguns recursos mais experimentais (consulte a documentação); também o manuseio de exceções pode ser melhorado Atualmente, possui apenas uma dependência externa, num2words. Todas as dependências podem ser encontradas no requirements.txt e incluídas no setup.py também, no momento.
A instalação é fácil usando a instalação do pacote git pip e o GIT com base no setup.py :
pip install git+https://github.com/repodiac/german_transliterateConfigurar:
import german_transliterate.core ) no seu ambiente python atual como qualquer outro pacote pip (no caso, criar um ambiente virtual com virtualenv ou conda antes).No código python ou como biblioteca:
from german_transliterate.core import GermanTransliterate
text = 'Um 13:15h kaufte Hr. Meier (Mitarbeiter der Firma ABC) 1.000 Luftballons für 250€.'
print('ORIGINAL:', text, 'n')
ops = {'acronym_phoneme', 'accent_peculiarity', 'amount_money', 'date', 'timestamp',
'weekday', 'month', 'time_of_day', 'ordinal', 'special', 'math_symbol', 'spoken_symbol'}
# use these setting for PHONEMIC ENCODINGS as input (e.g. with TTS)
print('TRANSLITERATION with phonemic encodings:',
GermanTransliterate(replace={';': ',', ':': ' '}, sep_abbreviation=' -- ').transliterate(text), 'n')
# use none or your own for other purposes than phonemic encoding and do not use 'spoken_symbol' or 'acronym_phoneme'
print('TRANSLITERATION (default):',
GermanTransliterate(transliterate_ops=list(ops-{'spoken_symbol', 'acronym_phoneme'})).transliterate(text), 'n')
Novo da linha de comando (no shell):
python core.py '1, 2, 3 - alles ist dabei'
Atualmente, existe apenas um método a ser usado: transliterate('Das ist der Text.')
Possui os seguintes parâmetros de entrada:
transliterate_ops , veja abaixo os detalhesreplace o ditado de "Original: Substacement" Tuplas a serem usadas como substituições "on-the-fly" adicionais com o texto, por exemplo, substitua = {'-': ''} substitui todos os traços pelo espaço em branco; Deixe empty para uso normal e use {';': ',', ':': ' '} com codificações fonêmicassep_abbreviation Um separador especial usado para transliteração de abreviações; Isso é principalmente útil apenas com a codificação fonêmica de um texto como uma próxima etapa em um pipeline TTS; Deixe empty para uso normal e uso ' -- ' com codificações fonêmicasmake_lowercase Se true, o texto é tornado minúsculo (deixe empty por padrão) NOTA : A maioria das operações de transliterato funciona apenas com make_lowercase=True - isso se deve aos vários dicionários que operam apenas com minúsculas. Use make_lowercase=False somente quando transliterate_ops não for usado excessivamente, caso contrário, a maioria deles não funciona! Os parâmetros usados para o parâmetro config transliterate_ops são os seguintes:
acronym_phoneme translitera abreviações como ABC em uma versão fonêmica ah beh zeeaccent_peculiarity remove as codificações de unicode peculiar e mapeiam-as para versões compatíveis com ASCII (limpeza OP)amount_money translitera símbolos de moeda e dinheiro como $, €, EUR etc.date translitra as datas, por exemplo, 12.10.2019timestamp Translitera Timestamps, por exemplo, 13h: 15m: 45sweekday ( Experimental ), translitera as abreviações para os dias da semana, por exemplo, Mo - atualmente isso é bastante propenso a erros (muitos falsos positivos)month ( experimental ), translitera as abreviações por meses, por exemplo, Jan ou Dez - atualmente isso é bastante propenso a erros (muitos falsos positivos)time_of_day translitera a hora do dia, por exemplo, 13: 15hordinal números ordinais, por exemplo, 2. Em zweite (tenta encontrar uma troca para o sufixo de caso correto, ou seja, zweiten ou zweitem )special Casos de borda e termos especiais, por exemplo, 8/10 em acht von zehnmath_symbol ( experimental ), translitera uma pequena seleção de símbolos de matemática, por exemplo, plus , minus etc. (também aqui se aplica: pode ter muitos falsos positivos, então use com cuidado)spoken_symbol permite transliterar colchetes ou marcas de citação em linguagem falada, por exemplo, (texto) 'em -- in klammern -- text -- (se sep_abbreviation estiver definido como' - '), principalmente útil para tarefas TTS O estado atual é baseado principalmente no uso de mapeamentos manuais e expressões regulares para substituição e expansão de cordas (palavras ou termos). Portanto, o desempenho atual deve ser bom o suficiente para ser usado com inferência on -line ou uso "em tempo real" em um pipeline de processamento de texto. Como outros módulos ou operações são adicionados ao longo do tempo, também pode haver métodos bastante lentos fazendo cálculos pesados e, portanto, adequados principalmente para treinamento ou processamento offline.
Abra questões no Github para obter bugs ou solicitações de recursos. Você também pode entrar em contato comigo por e -mail.