やさしい日本語言い換えシステムを支える技術
- 28. 朝食 → 朝ごはん
培え ば → 育てれ ば
まあ
わかる
動詞(仮定) 動詞(仮定)
- 29. 朝食 → 朝ごはん
培え ば → 育てれ ば
獲得 し て → 得 て 2語か... サ変名詞 動詞
(連用)
動詞
(連用)
- 30. 朝食 → 朝ごはん
培え ば → 育てれ ば
獲得 し て → 得 て
読書 し て → 読ん で
!?
- 31. 朝食 → 朝ごはん
培え ば → 育てれ ば
獲得 し て → 得 て
読書 し て → 読ん で
の 列挙 → を 並べる こと
!?
!?
- 36. これから話す内容(in
Haskell)
trait_label :: Word → Label
type Rule = [Word] → Int × [Word]
prefix_match :: [Label] → Rule × Int
simplify :: [Word] → [Word]
simplify seq = simplify' seq []
simplify' :: [Word] → [Word] → [Word]
simplify' [] applied = applied
simplify' seq applied =
let trait_seq = map (e -> trait_label e) seq
let (rule, len) = prefix_match trait_seq in
let (chunk, offset) = rule (take seq len) in
simplify' (drop (len - offset)) (applied ++ chunk)
- 46. 特徴ラベル関数の例
trait_label( ) = :m_proper
固有名詞
coins
trait_label( 食 べ る ) = :d_other
※型注釈で言うと
trait_label :: Word → Label
動詞(その他)
trait_label( す る ) = :d_suru
動詞(スル)
全29種類(有限集合)。
d_itdk,
d_kdsr,
d_nsr,
d_other,
d_rrrrr,
d_srssr,
d_suru,
go,
j_de,
j_ga,
j_hkm,
j_ni,
j_no,
j_other,
j_te,
j_trdr,
j_woto,
jd_aru,
jd_kako,
jd_na,
jd_nai,
jd_spe_da,
jd_zu,
keiyoshi,
m_gokan,
m_other,
m_proper,
m_sahen,
m_teki
- 47. 特徴ラベル関数の例
trait_label( ) = :m_proper
固有名詞
coins
これが
特徴ラベル
trait_label( 食 べ る ) = :d_other
※型注釈で言うと
trait_label :: Word → Label
動詞(その他)
trait_label( す る ) = :d_suru
動詞(スル)
全29種類(有限集合)。
d_itdk,
d_kdsr,
d_nsr,
d_other,
d_rrrrr,
d_srssr,
d_suru,
go,
j_de,
j_ga,
j_hkm,
j_ni,
j_no,
j_other,
j_te,
j_trdr,
j_woto,
jd_aru,
jd_kako,
jd_na,
jd_nai,
jd_spe_da,
jd_zu,
keiyoshi,
m_gokan,
m_other,
m_proper,
m_sahen,
m_teki
- 56. 前方一致ルール検索の例
以下のルールが定義されているとする
[:j_ni]
[:m_other]
[:m_other, :j_no]
[:j_wo, :m_sahen]
[:m_sahen, :d_suru]
[:m_sahen, :d_suru, :j_te]
[:m_sahen, :d_suru, :jd_ta]
nothing
noun
noun_suffix
sahen_prefix
sahen_suru
sahen_suru_te
sahen_suru_speda
- 57. 前方一致ルール検索の例
prefix_match([:m_other, :j_no, :m_other])
[:j_ni]
[:m_other]
[:m_other, :j_no]
[:j_wo, :m_sahen]
[:m_sahen, :d_suru]
[:m_sahen, :d_suru, :j_te]
[:m_sahen, :d_suru, :jd_ta]
nothing
noun
noun_suffix
sahen_prefix
sahen_suru
sahen_suru_te
sahen_suru_speda
- 58. 前方一致ルール検索の例
prefix_match([:m_other, :j_no, :m_other])
[:j_ni]
[:m_other]
[:m_other, :j_no]
[:j_wo, :m_sahen]
[:m_sahen, :d_suru]
[:m_sahen, :d_suru, :j_te]
[:m_sahen, :d_suru, :jd_ta]
nothing
noun
noun_suffix
sahen_prefix
sahen_suru
sahen_suru_te
sahen_suru_speda
2件
hit
- 59. 前方一致ルール検索の例
prefix_match([:m_other, :j_no, :m_other])
[:j_ni]
[:m_other]
[:m_other, :j_no]
[:j_wo, :m_sahen]
[:m_sahen, :d_suru]
[:m_sahen, :d_suru, :j_te]
[:m_sahen, :d_suru, :jd_ta]
nothing
noun
noun_suffix
sahen_prefix
sahen_suru
sahen_suru_te
sahen_suru_speda
1件
hit
- 60. 前方一致ルール検索の例
prefix_match([:m_other, :j_no, :m_other])
[:j_ni]
[:m_other]
[:m_other, :j_no]
[:j_wo, :m_sahen]
[:m_sahen, :d_suru]
[:m_sahen, :d_suru, :j_te]
[:m_sahen, :d_suru, :jd_ta]
nothing
noun
noun_suffix
sahen_prefix
sahen_suru
sahen_suru_te
sahen_suru_speda
1件
hit
2単語
- 61. 前方一致ルール検索の例
prefix_match([:m_other, :j_no, :m_other])
= (noun_suffix, 2)
[:j_ni]
[:m_other]
[:m_other, :j_no]
[:j_wo, :m_sahen]
[:m_sahen, :d_suru]
[:m_sahen, :d_suru, :j_te]
[:m_sahen, :d_suru, :jd_ta]
nothing
noun
noun_suffix
sahen_prefix
sahen_suru
sahen_suru_te
sahen_suru_speda
2単語
- 63. trait_label :: Word → Label
type Rule = [Word] → Int × [Word]
prefix_match :: [Label] → Rule × Int
simplify :: [Word] → [Word]
simplify seq = simplify' seq []
simplify' :: [Word] → [Word] → [Word]
simplify' [] applied = applied
simplify' seq applied =
ここの説明が終わった
let trait_seq = map (e -> trait_label e) seq
let (rule, len) = prefix_match trait_seq in
let (chunk, offset) = rule (take seq len) in
simplify' (drop (len - offset)) (applied ++ chunk)
- 64. trait_label :: Word → Label
type Rule = [Word] → Int × [Word]
prefix_match :: [Label] → Rule × Int
simplify :: [Word] → [Word]
simplify seq = simplify' seq []
simplify' :: [Word] → [Word] → [Word]
simplify' [] applied = applied
simplify' seq applied =
これからここを
日本語で説明
let trait_seq = map (e -> trait_label e) seq
let (rule, len) = prefix_match trait_seq in
let (chunk, offset) = rule (take seq len) in
simplify' (drop (len - offset)) (applied ++ chunk)
- 73. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
特徴ラベルを求める
- 74. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
noun
(noun_suffix)
(noun_teki)
(noun_teki_na)
- 75. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
noun_suffix
- 76. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
悪い
noun_suffix([悪性,の]) = ([悪い], 2)
- 77. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
2
悪い
noun_suffix([悪性,の]) = ([悪い], 2)
- 78. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
悪い
noun
(noun_suffix)
(noun_teki)
(noun_teki_na)
- 79. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
悪い
noun_suffix
- 80. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
悪い 腫瘍
辞書にHitせず
noun_suffix([腫瘍,の]) = ([腫瘍], 1)
- 81. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
悪い 腫瘍
1
noun_suffix([腫瘍,の]) = ([腫瘍], 1)
- 82. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
悪い 腫瘍
nothing
(noun_prefix)
(verb_prefix)
- 83. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
悪い 腫瘍
noun_prefix
- 84. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
悪い 腫瘍 を 取り除くこと
noun_prefix([の,除去]) = ([を,取り除くこと], 2)
- 85. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
2
悪い 腫瘍 を 取り除くこと
noun_prefix([の,除去]) = ([を,取り除くこと], 2)
- 86. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
nothing
(sahen_prefix)
(verb_prefix)
悪い 腫瘍 を 取り除くこと
- 87. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
sahen_prefix
悪い 腫瘍 を 取り除くこと
- 88. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
悪い 腫瘍 を 取り除くこと に
sahen_prefix([に, 成功]) = ([に], 1)
「成功」は「に」を置換しない
- 89. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
1
悪い 腫瘍 を 取り除くこと に
sahen_prefix([に, 成功]) = ([に], 1)
- 90. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
悪い 腫瘍 を 取り除くこと に
sahen
(sahen_suru)
(sahen_suffix)
(sahen_suru_kako)
- 91. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
悪い 腫瘍 を 取り除くこと に
sahen_suru
(sahen_suffix)
(sahen_suru_kako)
- 92. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
悪い 腫瘍 を 取り除くこと に
sahen_suru_kako
- 93. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
悪い 腫瘍 を 取り除くこと に うまくいっ た
sahen_suru_kako([成功,し,た]) = ([うまくいっ,た], 3)
- 94. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
3
悪い 腫瘍 を 取り除くこと に うまくいっ た
sahen_suru_kako([成功,し,た]) = ([うまくいっ,た], 3)
- 95. 言い換えのアルゴリズム
悪性 の 腫瘍 の 除去 に 成功 し た
m_other j_no m_other j_no m_sahen j_ni m_sahen d_suru jd_kako
完成ヽ(=́▽`=)ノ
悪い 腫瘍 を 取り除くこと に うまくいっ た