Quand je surfe sur le net, je flotte de railleries qui sortent des mots Masakari et Ahat Ahat. Si une telle balle perdue vole ici, comment devrions-nous la dépenser pour la santé mentale?
Une solution consiste à parer ces mauvaises phrases de santé mentale en les convertissant «lentement».
** Traduction lente ** http://needtec.sakura.ne.jp/yukkuri_translator/
Disons qu'on vous a dit: "Ne faites pas que des vidéos d'excréments, c'est de l'incompétence." Cependant, s'il est converti en "Ouais, ne le faites pas, ne le faites pas.", Vous ne vous fâcherez pas.
Ici, nous allons utiliser MeCab pour effectuer une analyse morphologique, et convertir lentement les phrases qui sont mauvaises pour la santé mentale pour éliminer l'inconfort, mais plutôt pour qu'elles se sentent chez elles.
yukkuri_translator.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import MeCab
import jctconv
import sys
import codecs
reload(sys)
sys.setdefaultencoding('utf-8')
sys.stdout = codecs.getwriter('utf-8') (sys.stdout)
converter = {
'manger' : 'Mush Mush',
'manger' : 'Musha Musha',
'dormir' : 'Suyasu',
'dormir' : 'Suyasu',
'Dormir' : 'Suyasuyashi',
'Dormir' : 'Suyasuyashi',
'merde' : 'Oui oui',
'Tabouret' : 'Oui oui',
'Vol' : 'Oui oui',
'urine' : 'Shishi',
'Pisse' : 'Shishi',
'Soleil' : 'Soleil',
'Les sanctions' : 'Du tout',
'Confiserie' : 'Juste',
'bonbons' : 'Juste',
'sucre' : 'Juste',
'jus' : 'Juste',
'Coordination' : 'Coordination',
'grossesse' : 'Ninshin'
}
class MarisaTranslator:
def __init__(self, user_dic):
self.mecab = MeCab.Tagger("-u " + user_dic)
def _check_san(self, n):
"""
Juger s'il faut ajouter "san"
"""
f = n.feature.split(',')
if f[0] == 'nom':
if f[1] == 'Nomenclature propriétaire' or f[1] == 'Général':
if n.next:
#Vérifiez le mot suivant
nf = n.next.feature.split(',')
if nf[0] in ['nom', 'Verbe auxiliaire']:
#Si la nomenclature suit, n'ajoutez pas "san" ici
return False
else:
if n.surface.endswith('M.'): # M.でおわる場合は付与しない
return False
if n.surface == 'm' or n.surface == 'Sama': # mでおわる場合は付与しない
return False
return True
else:
return True
return False
def _check_separator(self, n):
"""
Juger s'il faut ajouter ","
"""
f = n.feature.split(',')
if f[0] == 'Particule':
if n.next:
#Vérifiez le mot suivant
nf = n.next.feature.split(',')
if nf[0] in ['symbole', 'Particule']:
return False
return True
return False
def _get_gobi(self, n):
if n.next:
f_next = n.next.feature.split(',')
if n.next.surface == '、':
return None
if f_next[0] == 'BOS/EOS' or f_next[0] == 'symbole':
f = n.feature.split(',')
if f[0] in ['Particule', 'nom', 'symbole', 'Des mots impressionnants']:
return None
if f[5] in ['Commande e', 'Type continu']:
return None
if n.surface in ['Est']:
return 'Quoi'
else:
return n.surface + 'Noze'
return None
def translate(self, src):
n = self.mecab.parseToNode(src)
text = ''
pre_node = None
while n:
f = n.feature.split(',')
if n.surface in converter:
text += converter[n.surface]
elif len(f) > 8:
gobi = self._get_gobi(n)
if gobi is not None:
text += gobi
elif f[8] != '*':
text += f[8]
else:
text += n.surface
else:
text += n.surface
if self._check_san(n):
text += 'M.'
elif self._check_separator(n):
text += '、'
n = n.next
pre_node = n
return jctconv.kata2hira(text.decode('utf-8')).encode('utf-8')
Exemple d'utilisation de la classe ci-dessus:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from yukkuri_translator import MarisaTranslator
if __name__ == "__main__":
t = MarisaTranslator('yukkuri.dic')
print t.translate('Ne faites pas que des vidéos d'excréments, cette faible capacité.')
En rendant tous les caractères kana simples, cela devient une ligne comme un cerveau de 餡子.
Pour ce faire, effectuez d'abord une analyse morphologique avec MeCab. Cela vous donnera la lecture de chaque mot. Cela s'applique à 8 fonctionnalités (en commençant par 0). Puisque cette lecture est en katakana, utilisez jctconv pour tout convertir en pseudonyme simple.
Il peut être mal lu, mais il s'agit de ** spécification ** car ce n'est qu'un sushi.
En raison de la lenteur des spécifications, les pseudonymes plats seront beaucoup utilisés. Par conséquent, afin d'améliorer la lisibilité, ajoutez autant que possible "," après le mot auxiliaire. Voir "_check_separator" pour plus d'informations sur cette condition.
En ajoutant "san" à la fin de la nomenclature, vous pouvez exprimer la lenteur. Si la nomenclature continue, il existe des conditions telles que l'exclusion, veuillez donc vérifier "_check_san" pour plus de détails.
La fin de Slow Marisa a une caractéristique, et dans de nombreux cas, la fin de la phrase se termine par "Noze" ou "Nanoze", donc je l'ai reproduite.
Un exemple est le suivant.
La gestion des paiements et des dépenses est la norme
S'il y a
Il est naturel de gérer les dépenses
Ce sera.
Veuillez vous référer à "_get_gobi" pour la condition de la fin.
Essayez de remplacer quelques mots. Par exemple, le mot sale «feces» est remplacé par «yes» pour stabiliser l'esprit de l'utilisateur. Ce remplacement est effectué en fonction du contenu enregistré dans la variable du convertisseur.
En utilisant l'analyse morphologique de MeCab, il a été confirmé que les phrases mauvaises pour la santé mentale peuvent être déguisées comme si elles parlaient lentement et gentiment.
En appliquant cela, on pense qu'il est possible de traduire en phrases comme "Slowly Reimu", "Slowly Youmu" et "Yaruo".
Voici une application qui s'exécute sur le Web et son code.
** Traduction lente ** http://needtec.sakura.ne.jp/yukkuri_translator/ https://github.com/mima3/yukkuri_translator
c'est tout.
Recommended Posts