Программирование подсказок с японским [закрытым] Языком/Символами

создайте переменную myObj: Object;;

, а затем <button (click)="activeModal.close(); myObj = someObj">Ok</button>

или, если сложнее, вы можете попробовать

<button (click)="activeModal.close(); onClose()">Ok</button>

и затем создать onClose ( ) метод.

7
задан Seanny123 11 December 2016 в 12:46
поделиться

6 ответов

Мой вопрос не только в том, как это сделать в JavaScript, но какие советы и стратегии для выполнения этих видов вещей и в других языках.

То, что вы хотите сделать, это довольно простые манипуляции со строками - помимо отсутствующих разделителей слов, как замечает Барри, хотя это не техническая проблема.

По сути, для современного Unicode-осведомленного В языке программирования (который, как я полагаю, был JavaScript начиная с версии 1.3) нет реальной разницы между японским кана или кандзи и латинской буквой - все они просто символы. А строка - это просто строка символов.

Трудно понять, когда вам нужно конвертировать строки в байты, потому что тогда вам нужно обратить внимание на то, какую кодировку вы используете. К сожалению, многие программисты, особенно носители английского языка, склонны скрывать эту проблему, потому что ASCII является де-факто стандартной кодировкой латинских букв, а другие кодировки обычно стараются быть совместимыми. Если вам нужны только латинские буквы, то вы можете блаженно не знать о кодировке символов, верить, что байты и символы - это одно и то же - и писать программы, которые искажают все, что не является ASCII.

Так что «секрет» Программирование с поддержкой Юникода таково: научитесь распознавать, когда и где строки / символы преобразуются в байты и из них, и убедитесь, что во всех этих местах используется правильная кодировка, т. Е. Та, которая будет использоваться для обратного преобразования и это может закодировать все символы, которые вы используете. UTF-8 постепенно становится стандартом де-факто и обычно должен использоваться там, где у вас есть выбор.

Типичные примеры (не исчерпывающие):

  • При написании исходного кода со строковыми литералами, отличными от ASCII (настройте кодировку в редакторе / IDE)
  • При компиляции или интерпретации такого исходного кода (компилятору / интерпретатору необходимо знать кодировку)
  • При чтении / записи строк в файл (кодировка должна быть указана где-то в API или в метаданных файла)
  • При записи строк в базу данных (кодировка должна быть указана в конфигурации БД или таблицы)
  • При доставке страниц HTML через веб-сервер (кодировка должна быть указана в заголовках HTML или в мета-заголовке страниц; формы могут быть еще более хитрыми)
4
ответ дан 6 December 2019 в 05:56
поделиться

Ваш вопрос мне совершенно неясен.

Однако у меня был некоторый опыт работы с японским языком, поэтому я дам свои 2 цента.

, так как в японских текстах нет разделения слов. (например, пробел), самый важный инструмент, который нам пришлось приобрести, - это распознаватель слов на основе словаря.

Как только вы разбили текст, легче манипулировать им с помощью «обычных» инструментов.

было только 2 инструменты, которые сделали выше, и как побочный продукт, они также работали как tagger (то есть существительное, глагол и т. д.).

edit: всегда используйте юникод при работе с языками.

1
ответ дан 6 December 2019 в 05:56
поделиться

Если я правильно помню (и я много ослабил год, когда я взял японский, так что я могу ошибаться), замены, которые вы хотите сделать, определяются последним или двумя символами в слове , Принимая ваш первый пример, любой глагол, оканчивающийся на «す», всегда будет иметь «し て», когда спрягается таким образом. Аналогично для む -> ん で. Не могли бы вы установить отображение последнего символа (ов) -> сопряженной формы. Возможно, вам придется учитывать исключения, например все, что сопряжено с xx っ っ.

Что касается переносимости между языками, вам придется реализовывать логику по-разному в зависимости от того, как они работают. Это решение было бы довольно просто реализовать для испанского языка, так как спряжения зависят от того, заканчивается ли глагол на -ar, -er или -ir (с некоторыми глаголами, требующими исключения в вашей логике). К сожалению, это

0
ответ дан 6 December 2019 в 05:56
поделиться
  • Придерживайтесь Unicode и UTF-8 везде.
  • Держитесь подальше от родных японских кодировок: euc-jp, shiftjis, iso-2022-jp, но знайте, что вы, вероятно, столкнетесь с ними в какой-то момент, если продолжите.
  • Познакомьтесь с сегментатором для выполнения сложных задач, таких как POS-анализ, сегментация слов и т. Д., Стандартные инструменты, используемые большинством людей, которые работают с японским языком, в порядке популярности / силы.

MeCab (изначально на SourceForge ) потрясающий: он позволяет вам брать текст, например,

「日本語は、とても難しいです。」

и получать всевозможную полезную информацию обратно

kettle:~$ echo 日本語は、難しいです | mecab 
日本語 名詞,一般,*,*,*,*,日本語,ニホンゴ,ニホンゴ
は   助詞,係助詞,*,*,*,*,は,ハ,ワ
、   記号,読点,*,*,*,*,、,、,、
難しい 形容詞,自立,*,*,形容詞・イ段,基本形,難しい,ムズカシイ,ムズカシイ
です  助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
EOS

, которая в основном является подробным части речи, чтения, произношения и т. д. Это также поможет вам проанализировать времена глаголов,

kettle:~$ echo メキシコ料理が食べたい | mecab 
メキシコ    名詞,固有名詞,地域,国,*,*,メキシコ,メキシコ,メキシコ
料理  名詞,サ変接続,*,*,*,*,料理,リョウリ,リョーリ
が   助詞,格助詞,一般,*,*,*,が,ガ,ガ
食べ  動詞,自立,*,*,一段,連用形,食べる,タベ,タベ
たい  助動詞,*,*,*,特殊・タイ,基本形,たい,タイ,タイ
EOS

Однако, вся документация на японском языке, и ее немного сложно настроить и выяснить как отформатировать вывод так, как вы хотите. Для ubuntu / debian доступны пакеты и привязки на нескольких языках, включая perl, python, ruby ​​...

Apt-repos для ubuntu:

deb http://cl.naist.jp/~eric-n/ubuntu-nlp intrepid all
deb-src http://cl.naist.jp/~eric-n/ubuntu-nlp intrepid all

Пакеты для установки: Это также поможет вам проанализировать времена глаголов,

kettle:~$ echo メキシコ料理が食べたい | mecab 
メキシコ    名詞,固有名詞,地域,国,*,*,メキシコ,メキシコ,メキシコ
料理  名詞,サ変接続,*,*,*,*,料理,リョウリ,リョーリ
が   助詞,格助詞,一般,*,*,*,が,ガ,ガ
食べ  動詞,自立,*,*,一段,連用形,食べる,タベ,タベ
たい  助動詞,*,*,*,特殊・タイ,基本形,たい,タイ,タイ
EOS

Однако вся документация на японском языке, и ее немного сложно настроить и выяснить, как форматировать выходные данные так, как вы этого хотите. Для ubuntu / debian доступны пакеты и привязки на нескольких языках, включая perl, python, ruby ​​...

Apt-repos для ubuntu:

deb http://cl.naist.jp/~eric-n/ubuntu-nlp intrepid all
deb-src http://cl.naist.jp/~eric-n/ubuntu-nlp intrepid all

Пакеты для установки: Это также поможет вам проанализировать времена глаголов,

kettle:~$ echo メキシコ料理が食べたい | mecab 
メキシコ    名詞,固有名詞,地域,国,*,*,メキシコ,メキシコ,メキシコ
料理  名詞,サ変接続,*,*,*,*,料理,リョウリ,リョーリ
が   助詞,格助詞,一般,*,*,*,が,ガ,ガ
食べ  動詞,自立,*,*,一段,連用形,食べる,タベ,タベ
たい  助動詞,*,*,*,特殊・タイ,基本形,たい,タイ,タイ
EOS

Однако вся документация на японском языке, и ее немного сложно настроить и выяснить, как форматировать выходные данные так, как вы этого хотите. Для ubuntu / debian доступны пакеты и привязки на нескольких языках, включая perl, python, ruby ​​...

Apt-repos для ubuntu:

deb http://cl.naist.jp/~eric-n/ubuntu-nlp intrepid all
deb-src http://cl.naist.jp/~eric-n/ubuntu-nlp intrepid all

Пакеты для установки: $ apt-get install mecab-ipadic-utf8 mecab python-mecab

должен сделать трюк, как я думаю.

Другие альтернативы mecab, ChaSen , написанные много лет назад автором MeCab (который, кстати, сейчас работает в Google) и Какаси , который гораздо менее силен.

Я бы определенно постарался избежать использования собственных процедур сопряжения. проблема в том, что для этого потребуются тонны и тонны работы, которую уже сделали другие, и в конечном итоге невозможно охватить все крайние случаи правилами.

MeCab управляется статистически и обучается на множестве данных. Он использует сложную технику машинного обучения, называемую условными случайными полями (CRFs), и результаты действительно довольно хорошие.

Веселитесь с японцами. Я' Я не уверен, насколько хорош ваш японский, но если вам нужна помощь с документами для mecab или что-то еще, не стесняйтесь спрашивать об этом. Кандзи может быть довольно пугающим в начале.

26
ответ дан 6 December 2019 в 05:56
поделиться

Вам нужно посмотреть на правила грамматики. Иметь массив правил для каждого спряжения. Давайте возьмем 〜 て форму для примера. Псудокод:

def te_form(verb)
  switch verb.substr(-1, 1) == "る" then return # verb minus ru plus te
  case "る" #return (verb - る) + て
  case "す" #return (verb - す)+して

и т. Д. В основном, разбейте его на глаголы типа I, II и III.

2
ответ дан 6 December 2019 в 05:56
поделиться
​​

Поскольку большинство глаголов в японском языке следуют одному из небольшого набора предсказуемых шаблонов, самый простой и наиболее расширяемый способ сгенерировать все формы данного глагола - это дать глаголу знать, в каком спряжении он должен быть затем напишите функции для генерации каждой формы в зависимости от спряжения.

Псевдокод:

generateDictionaryForm(verb)
  case Ru-Verb: verb.stem + る
  case Su-Verb: verb.stem + す
  case Ku-Verb: verb.stem + く
  ...etc.

generatePoliteForm(verb)
  case Ru-Verb: verb.stem + ります
  case Su-Verb: verb.stem + します
  case Ku-Verb: verb.stem + きます
  ...etc.

Неправильные глаголы, конечно, будут иметь специальный регистр.

Некоторые варианты этого будут работать для любого другого достаточно регулярного языка (т. е. не английский).

0
ответ дан 6 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: