bobfromjapan
commited on
Commit
•
ae56469
1
Parent(s):
11d30fa
Upload 7 files
Browse files- data/test.txt +152 -0
- data/train.txt +0 -0
- data/transcript.txt +0 -0
- insert_punctuation.py +87 -0
- prepare_dataset.py +39 -0
- train.py +178 -0
- weight/punctuation_position_model.pth +3 -0
data/test.txt
ADDED
@@ -0,0 +1,152 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
女は昨夕艶めかしい姿をして、彼の浴室の戸を開けた人に違なかった。風呂場で彼を驚ろかした大きな髷をいつの間にか崩して、尋常の束髪に結い更えたので、彼はつい同じ人と気がつかずにいた。彼はさらに声を聴いただけで顔を知らなかった伴の男の方を、よそながらの初対面といった風に、女と眺め比べた。短かく刈り込んだ当世風の髭を鼻の下に生やしたその男は、なるほど風呂番の云った通り、どこかに商人らしい面影を宿していた。津田は彼の顔を見るや否や、すぐお秀の夫を憶い出した。
|
2 |
+
堀庄太郎、もう少し略して堀の庄さん、もっと詰めて当人のしばしば用いる堀庄という名前が、いかにも妹婿の様子を代表しているごとく、この男の名前もきっとその髭を虐殺するように町人染みていはしまいかと思われた。瞥見のついでに纏められた津田の想像はここにとどまらなかった。彼はもう一歩皮肉なところまで切り込んで、彼らがはたして本当の夫婦であるかないかをさえ疑問の中に置いた。したがって早起をして食前浴後の散歩に出たのだと明言する彼らは、津田にとっての違例な現象にほかならなかった。彼は楊枝で歯を磨りながらまだ元の所に立っていた。
|
3 |
+
彼がよそ見をしているにもかかわらず、番頭を相手に二人のする談話はよく聴えた。 女は番頭に訊いた。「今日は別館の奥さんはどうかなすって」番頭は答えた。「いえ、手前はちっとも存じませんが、何か――」
|
4 |
+
「別に何って事もないんですけれどもね、いつでも朝風呂場でお目にかかるのに、今日はいらっしゃらなかったから」「はあさようで――、ことによるとまだお休みかも知れません」「そうかも知れないわね。だけどいつでも両方の時間がちゃんときまってるのよ、朝お風呂に行く時の」「へえ、なるほど」
|
5 |
+
「それに今朝ごいっしょに裏の山へ散歩に参りましょうってお約束をしたもんですからね」「じゃちょっと伺って参りましょう」「いいえ、もういいのよ。散歩はこの通り済んじまっ たんだから。ただもしやどこかお加減でも悪いのじゃないかしらと思って、ちょっと番頭さんに訊いてみただけよ」
|
6 |
+
「多分ただのお休みだろうと思いますが、それとも――」「それともなんて、そう真面目くさらなくってもいいのよ。ただ訊いてみただけなんだから」二人はそれぎり行き過ぎた。津田は歯磨粉で口中をいっぱいにしながら、また昨夜の風呂場を探しに廊下へ出た。
|
7 |
+
章おわり。百九「実は先刻から云おうか止そうかと思って、考えていたんですけれども、そんな風に兄さんから冷笑かされて見ると、私だって黙って帰るのが厭になります。だから云うだけの事はここで云ってしまいます。けれども一応お断りしておきますが、これから申し上げる事は今までのとは少し意味が違いますよ。それを今まで通りの態度で聴いていられると、私だって少し迷惑するかも知れません、というのは、ただ私が誤解されるのが厭だという意味でなくって、私の心持があなた方に通じなくなるという訳合からです」
|
8 |
+
お秀の説明はこういう言葉で始まった。それがすでに自分の態度を改めかかっている二人の予期に一倍の角度を与えた。彼らは黙ってその後を待った。しかしお秀はもう一遍念を押した。「少しや真面目に聴いて下さるでしょうね。
|
9 |
+
私の方が真面目になったら」こう云ったお秀はその強い眼を津田の上からお延に移した。「もっとも今までが不真面目という訳でもありませんけれどもね。何しろ嫂さんさえここにいて下されば、まあ大丈夫でしょう。いつもの兄妹喧嘩になったら、その時に止めていただけばそれまでですから」
|
10 |
+
お延は微笑して見せた。しかしお秀は応じなかった。「私はいつかっから兄さんに云おう云おうと思っていたんです。嫂さんのいらっしゃる前でですよ。だけど、その機会がなかったから、今日まで云わずにいました。
|
11 |
+
それを今改めてあなた方のお揃いになったところで申してしまうのです。それはほかでもありません。よござんすか、あなた方お二人は御自分達の事よりほかに何にも考えていらっしゃらない方だという事だけなんです。自分達さえよければ、いくら他が困ろうが迷惑しようが、まるでよそを向いて取り合わずにいられる���だというだけなんです」この断案を津田はむしろ冷静に受ける事ができた。
|
12 |
+
彼はそれを自分の特色と認める上に、一般人間の特色とも認めて疑わなかったのだから。しかしお延にはまたこれほど意外な批評はなかった。彼女はただ呆れるばかりであった。幸か不幸かお秀は彼女の口を開く前にすぐ先へ行った。「兄さんは自分を可愛がるだけなんです。
|
13 |
+
嫂さんはまた兄さんに可愛がられるだけなんです。あなた方の眼にはほかに何にもないんです。妹などは無論の事、お父さんもお母さんももうないんです」ここまで来たお秀は急に後を継ぎ足した。二人の中の一人が自分を遮ぎりはしまいかと恐れでもするような様子を見せて。
|
14 |
+
「私はただ私の眼に映った通りの事実を云うだけです。それをどうして貰いたいというのではありません。もうその時機は過ぎました。有体にいうと、その時機は今日過ぎたのです。実はたった今過ぎました。
|
15 |
+
あなた方の気のつかないうちに、過ぎました。私は何事も因縁ずくと諦らめるよりほかに仕方がありません。しかしその事実から割り出される結果だけは是非共あなた方に聴いていただきたいのです」お秀はまた津田からお延の方に眼を移した。二人はお秀のいわゆる結果なるものについて、判然した観念がなかった。
|
16 |
+
したがってそれを聴く好奇心があった。だから黙っていた。「結果は簡単です」とお秀が云った。「結果は一口で云えるほど簡単です。
|
17 |
+
しかし多分あなた方には解らないでしょう。あなた方はけっして他の親切を受ける事のできない人だという意味に、多分御自分じゃ気がついていらっしゃらないでしょうから。こう云っても、あなた方にはまだ通じないかも知れないから、もう一遍繰り返します。自分だけの事しか考えられないあなた方は、人間として他の親切に応ずる資格を失なっていらっしゃるというのが私の意味なのです。つまり他の好意に感謝する事のできない人間に切り下げられているという事なのです。
|
18 |
+
あなた方はそれでたくさんだと思っていらっしゃるかも知れません。どこにも不足はないと考えておいでなのかも分りません。しかし私から見ると、それはあなた方自身にとってとんでもない不幸になるのです。人間らしく嬉しがる能力を天から奪われたと同様に見えるのです。兄さん、あなたは私の出したこのお金は欲しいとおっしゃるのでしょう。
|
19 |
+
しかし私のこのお金を出す親切は不用だとおっしゃるのでしょう。私から見ればそれがまるで逆です。人間としてまるで逆なのです。だから大変な不幸なのです。そうして兄さんはその不幸に気がついていらっしゃらないのです。
|
20 |
+
嫂さんはまた私の持って来たこのお金を兄さんが貰わなければいいと思っていらっしゃるんです。さっきから貰わせまい貰わせまいとしていらっしゃるんです。つまりこのお金を断ることによって、併せて私の親切をも排斥しようとなさるのです。そうしてそれが嫂さんには大変なお得意になるのです。嫂さんも逆です。
|
21 |
+
嫂さんは妹の実意を素直に受けるために感じられる好い心持が、今のお得意よりも何層倍人間として愉快だか、まるで御存じない方なのです」お延は黙っていられなくなった。しかしお秀はお延よりなお黙っていられなかった。彼女を遮ぎろうとするお延の出鼻を抑えつけるような熱した語気で、今朝の彼にとって全く無用であった。路に曲折の難はあったにせよ、一足の無駄も踏まずに、自然昨夜の風呂場へ下りられた時、彼の腹には、夜来の自分を我ながら馬鹿馬鹿しいと思う心がさらに新らしく湧いて出た。
|
22 |
+
風呂場には軒下に篏めた高い硝子戸を通して、秋の朝日がかんかん差し込んでいた。その硝子戸越に岩だか土堤だかの片影を、近く頭の上に見上げた彼は、全身を温泉に浸けながら、いかに浴槽の位置が、大地の平面以下に切り下げられているかを発見した。そうしてこの崖と自分のいる場所との間には、高さから云ってずいぶんの相違があると思った。彼は目分量でその距離を一間半乃至二間と鑑定した後で、もしこの下にも古い風呂場があるとすれば、段々が一つ家の中に幾層もあるはずだという事に気がついた。崖の上には石蕗があった。
|
23 |
+
あいにくそこに朝日が射していないので、時々風に揺れる硬く光った葉の色が、いかにも寒そうに見えた。山茶花の花の散って行く様も湯壺から眺められた。けれども景色は断片的であった。けれどもそれがなぜだか彼の好奇心を唆った。すぐ崖の傍へ来て急に鳴き出したらしい鵯も、声が聴えるだけで姿の見えないのが物足りなかった。
|
24 |
+
しかしそれはほんのつけたりの物足りなさであった。実を云うと、津田は腹のうちで遥かそれ以上気にかかる事件を捏ね返していたので、念のため一々開けて見た。もっともこれはそのうちの一つの入口に、スリッパーが脱ぎ棄ててあったのが、彼に或暗示を与えたので、いよいよスリッパーの前に閉て切られた戸にかかった時、彼は急に躊躇した。彼は固より無心ではなかった。その上失礼という感じがどこかで手伝った。
|
25 |
+
仕方なしに外部から耳を峙てたけれども、中は森としているので、それに勢を得た彼の手は、思い切ってがらりと戸を開ける事ができた。そうしてほかと同じように空虚な浴室が彼の前に見出された時に、まあよかったという感じと、何だつまらないという失望が一度に彼の胸に起った。すでに裸になって、湯壺の中に浸った後の彼には、この引続きから来る一種の予期が絶えず働らいた。彼は苦笑しながら、昨夕と今朝の間に自分の経過した変化を比較した。昨夕の彼は丸髷の女に驚ろかされるまではむしろ無邪気であった。
|
26 |
+
今朝の彼はまだ誰も来ないうちから一種の待ち設けのために緊張を感じていた。それは主のないスリッパーに唆のかされた罪かも知れなかった。けれどもスリッパーがなぜ彼を唆のかしたかというと、寝起に横浜の女と番頭の噂さに上った清子の消息を聴かされたからであった。彼女はまだ起きていなかった。少くともまだ湯に入っていなかった。
|
27 |
+
もし入るとすれば今入っているか、これから入りに来るかどっちかでなければならなかった。鋭敏な彼の耳は、ふと誰か階段を下りて来るような足音を聴いた。彼はすぐじゃぶじゃぶやる手を止めた。彼はその源因を想像した。他の例にならって、自分のスリッパーを戸の前に脱ぎ捨てておいたのが悪くはなかったろうかと考えた。
|
28 |
+
なぜそれを浴室の中まで穿き込まなかったのだろうかという後悔さえ萌した。しばらくして彼はまた意外な足音を今度は浴槽の外側に聞いた。それは彼が石蕗の花を眺めた後、鵯鳥の声を聴いた前であった。彼の想像はすぐ前後の足音を結びつけた。風呂場を避けた前の足音の主が、わざと外へ出たのだという解釈が容易に彼に与えられた。
|
29 |
+
するとたちまち女の声がした。しかしそれは足音と全く別な方角から来た。下から見上げた外部の様子によって考えると、崖の上は幾坪かの平地で、その平地を前に控えた一棟の建物が、風呂場の方を向いて建てられているらしく思われた。何しろ声はそっちの見当から来た。そうしてその主は、たしかに先刻散歩の帰りに番頭と清子の話をした女であった。
|
30 |
+
昨夕湯気を抜くために隙かされた庇の下の硝子戸が今日は閉て切られているので、彼女の言葉は明かに津田の耳に入らなかった。けれども語勢その他から推して、一事はたしかであった。彼女は崖の上から崖の下へ向けて話しかけていた。だから順序を云えば、崖の下からも是非受け応えの挨拶が出なければならないはずであった。ところが意外にもその方はまるで音沙汰なしで、互い違いに起る普通の会話はけっして聴かれなかった。
|
31 |
+
しゃべる方はただ崖の上に限られていた。その代り足音だけは先刻のようにとまらなかった。疑いもなく一人の女が庭下駄で不規則な石段を踏んで崖を上って行った。それが上り切ったと思う頃に、足を運ぶ女の裾が硝子戸の上部の方に少し現われた。そうしてすぐ消えた。
|
32 |
+
津田の眼に残った瞬間の印象は、ただうつくしい模様の翻がえる様であった。彼は動き去ったその模様のうちに、昨夕階段の下から見たと同じ色を認めたような気がした。章、終り。百八十室に帰って朝食の膳に着いた時、彼は給仕の下女と話した。「浜のお客さんのいる所は、新らしい風呂場から見える崖の上だろう」
|
33 |
+
「ええ。あちらへ行って御覧になりましたか」「いいや、おおかたそうだろうと思っただけさ」「よく当りましたね。ちとお遊びにいらっしゃいまし、旦那も奥さんも面白い方です。
|
34 |
+
退屈だ退屈だって毎日困ってらっしゃるんです」「よっぽど長くいるのかい」「ええもう十日ばかりになるでしょう」「あれだね、義太夫をやるってえのは」「ええ、よく御存じですね、もうお聴きになりましたか」
|
35 |
+
「まだだよ。ただ勝さんに教わっただけだ」彼が聴くがままに、二人についての知識を惜気もなく供給した下女は、それでも分も心得ていた。急所へ来るとわざと津田の問を外した。「時にあの女の人はいったい何だね」
|
36 |
+
「奥さんですよ」「本当の奥さんかね」「ええ、本当の奥さんでしょう」と云った彼女は笑い出した。「まさか嘘の奥さんてのもないでしょう、なぜですか」
|
37 |
+
「なぜって、素人にしちゃあんまり粋過ぎるじゃないか」 下女は答える代りに、突然清子を引合に出した。「もう一人奥にいらっしゃる奥さんの方がお人柄です」間取の関係から云って、清子の室は津田の後、二人づれの座敷は津田の前に当った。両方の中間に自分を見出した彼はようやく首肯いた。
|
38 |
+
「するとちょうど真中辺だね、ここは」 真中でも室が少し折れ込んでいるので、両方の通路にはなっていなかった。「その奥さんとあの二人のお客とは友達なのかい」「ええ御懇意です」「元から?」
|
39 |
+
「さあどうですか、そこはよく存じませんが、――おおかたここへいらしってからお知合におなんなすったんでしょう。始終行ったり来たりしていらっしゃいます、両方ともお閑なもんですから。昨日も公園へいっしょにお出かけでした」 津田は問題を取り逃がさないようにした。「その奥さんはなぜ一人でいるんだね」
|
40 |
+
「少し身体がお悪いんです」「旦那さんは」「いらっしゃる時は旦那さまもごいっしょでしたが、すぐお帰りになりました」「置いてきぼりか、そりゃひどいな。それっきり来ないのかい」
|
41 |
+
「何でも近いうちにまたいらっしゃるとかいう事でしたが、どうなりましたか」「退屈だろうね、奥さんは」「ちと話しに行って、お上げになったらいかがです」「話しに行ってもいいかね、後で聴いといてくれたまえ」「へえ」
|
42 |
+
と答えた下女はにやにや笑うだけで本気にしなかった。津田はまた訊いた。「何をして暮しているのかね、その奥さんは」「まあお湯に入ったり、散歩をしたり、義太夫を聴かされたり、――時々は花なんかお活けになります、それから夜よく手習をしていらっしゃいます」「そうかい。
|
43 |
+
本は?」「本もお読みになるでしょう」と中途半端に答えた彼女は、津田の質問があまり煩瑣にわたるので、とうとうあははと笑い出した。津田はようやく気がついて、少し狼狽たように話を外らせた。「今朝風呂場へスリッパーを忘れていったものがあるね、塞がってるのかと思ってはじめは遠慮していたが、開けて見たら誰もいなかったよ」
|
44 |
+
「おやそうですか、じゃまたあの先生でしょう」先生というのは書の専門家であった。方々にかかっている額や看板でその落を覚えていた津田は「へええ」と云った。「もう年寄だろうね」
|
45 |
+
「ええお爺さんです。こんなに白い髯を生やして」下女は胸のあたりへ自分の手をやって書家に相応わしい髯の長さを形容して見せた。「なるほど。やっぱり字を書いてるのかい」
|
46 |
+
「ええ何だかお墓に彫りつけるんだって、大変大きなものを毎日少しずつ書いていらっしゃいます」書家はその墓碑銘を書くのが目的で、わざわざここへ来たのだと下女から聴かされた時、津田は驚ろいて感心した。「あんなものを書くのにも、そんなに骨が折れるのかなあ。素人は半日ぐらいで、すぐ出来上りそうに考えてるんだが」この感想は全く下女に響かなかった。
|
47 |
+
しかし津田の胸には口へ出して云わないそれ以上の或物さえあった。彼は暗にこの老先生の用向と自分の用向とを見較べた。無事に苦しんで義太夫の稽古をするという浜の二人をさらにその傍に並べて見た。それから何の意味とも知れず花を活けたり手習をしたりするらしい清子も同列に置いて考えた。最後に、残る一人の客、その客は話もしなければ運動もせず、ただぽかんと座敷に坐って山を眺めているという下女の観察を聴いた時、彼は云った。
|
48 |
+
「いろんな人がいるんだね。五六人寄ってさえこう��んだから。夏や正月になったら大変だろう」「いっぱいになるとどうしても百三四十人は入りますからね」津田の意味をよく了解しなかったらしい下女は、ただ自分達の最も多忙を極めなければならない季節に、この家へ入り込んでくる客の人数を挙げた。
|
49 |
+
章おわり。百八十一食後の津田は床の脇に置かれた小机の前に向った。下女に頼んで取り寄せた絵端書へ一口ずつ文句を書き足して、その表へ名宛を記した。お延へ一枚、藤井の叔父へ一枚、吉川夫人へ一枚、それで必要な分は済んでしまったのに、下女の持って来た絵端書はまだ幾枚も余っていた。彼は漫然と万年筆を手にしたまま、不動の滝だの、ルナ公園だのと、山里に似合わない変な題を付けた地方的の景色をぼんやり眺めた。
|
50 |
+
それからまた印気を走らせた。今度はお秀の夫と京都にいる両親宛の分がまたたく間に出来上った。こう書き出して見ると、ついでだからという気も手伝って、ありたけの絵端書をみんな使ってしまわないと義理が悪いようにも思われた。最初は考えていなかった岡本だの、岡本の子供の一だの、その一の学校友達という連想から、また自分の親戚の方へ逆戻りをして、甥の真事だの、いろいろな名がたくさん並べられた。初手から気がついていながら、最後まで名を書かなかったのは小林だけであった。
|
51 |
+
他の意味は別として、ただ在所を嗅ぎつけられるという恐れから、津田はどうしてもこの旅行先を彼に知らせたくなかったのである。その小林は不日朝鮮へ行くべき人であった。無検束をもって自ら任ずる彼は、海を渡る覚悟ですでにもう汽車に揺られているかも知れなかった。同時に不規律な彼はまた出立と公言した日が来ても動かずにいないとも限らなかった。絵端書を見て、(もし津田がそれを出すとすると、)すぐここへやって来ないという事はけっして断言できなかった。
|
52 |
+
津田は陰晴定めなき天気を相手にして戦うように厄介なこの友達、もっと適切にいうとこの敵、の事を考えて、思わず肩を峙だてた。するといったん緒口の開いた想像の光景はそこでとまらなかった。彼を拉してずんずん先へ進んだ。彼は突然玄関へ馬車を横付にする、そうして怒鳴り込むような大きな声を出して彼の室へ入ってくる小林の姿を眼前に髣髴した。「何しに来た」
|
53 |
+
「何しにでもない、貴様を厭がらせに来たんだ」「どういう理由で」「理由も糸瓜もあるもんか。貴様がおれを厭がる間は、いつまで経ってもどこへ行っても、ただ追かけるんだ」「畜生ッ」
|
54 |
+
津田は突然拳を固めて小林の横ッ面を撲らなければならなかった。小林は抵抗する代りに、たちまち大の字になって室の真中へ踏ん反り返らなければならなかった。「撲ったな、この野郎。さあどうでもしろ」まるで舞台の上でなければ見られないような活劇が演ぜられなければならなかった。
|
55 |
+
そうしてそれが宿中の視聴を脅かさなければならなかった。その中には是非とも清子が交っていなければならなかった。万事は永久に打ち砕かれなければならなかった。事実よりも明暸な想像の一幕を、描くともなく頭の中に描き出した津田は、突然ぞっとして我に返った。もしそんな馬鹿げた立ち廻りが実際生活の表面に現われたらどうしようと考えた。
|
56 |
+
彼は羞恥と屈辱を遠くの方に感じた。それを象徴するために、頬の内側が熱って来るような気さえした。しかし彼の批判はそれぎり先へ進めなかった。他に対して面目を失う事、万一そんな不始末をしでかしたら大変だ。これが彼の倫理観の根柢に横わっているだけであった。
|
57 |
+
それを切りつめると、ついに外聞が悪いという意味に帰着するよりほかに仕方がなかった。だから悪い奴はただ小林になった。「おれに何の不都合がある。彼奴さえいなければ」彼はこう云って想像の幕に登場した小林を責めた。
|
58 |
+
そうして自分を不面目にするすべての責任を相手に背負わせた。夢のような罪人に宣告を下した後の彼は、すぐ心の調子を入れ代えて、紙入の中から一枚の名刺を出した。その裏に万年筆で、「僕は静養のため昨夜ここへ来ました」と書いたなり首を傾けた。それから「あなたがおいでの事を今朝聴きました」
|
59 |
+
と付け足してまた考えた。「これじゃ空々しくっていけない、昨夜会った事も何とか書かなくっちゃ」しかし当り障りのないようにそこへ触れるのはちょっと困難であった。第一書く事が複雑になればなるほど、文字が多くなって一枚の名刺では事が足りなくなるだけであった。彼はなるべく淡泊した口上を伝えたかった。
|
60 |
+
したがって小面倒な封書などは使いたくなかった。思いついたように違い棚の上を眺めた彼は、まだ手をつけなかった吉川夫人の贈物が、昨日のままでちゃんと載せてあるのを見て、すぐそれを下へ卸した。彼は果物籃の葢の間へ、「御病気はいかがですか。これは吉川の奥さんからのお見舞です」と書いた名刺を挿し込んだ後で、下女を呼んだ。
|
61 |
+
「宅に関さんという方がおいでだろう」今朝給仕をしたのと同じ下女は笑い出した。「関さんが先刻お話した奥さんの事ですよ」「そうか。じゃその奥さんでいいから、これを持って行って上げてくれ。
|
62 |
+
そうしてね、もしお差支えがなければちょっとお目にかかりたいって」「へえ」下女はすぐ果物籃を提げて廊下へ出た。章おわり。返事を待ち受ける間の津田は居据りの悪い置物のように落ちつかなかった。
|
63 |
+
ことにすぐ帰って来べきはずの下女が彼が吉川夫人の名を利用したのは、すでに万一を顧慮したからであった。夫人とそうして彼女の見舞品、この二つは、それを届ける津田に対して、清子の束縛を解く好い方便に違なかった。単に彼と応接する煩わしさ、もしくはそれから起り得る嫌疑を避けようとするのが彼女の当体であったにしたところで、下女の遅いのを一層苦にしなければならなかった彼は、ふかしかけた煙草を捨てて、縁側へ出たり、何のためとも知れず、黙って池の中を動いている緋鯉を眺めたり、そこへしゃがんで、軒下に寝ている犬の鼻面へ手を延ばして見たりした。やっとの事で、下女の足音が廊下の曲り角に聴えた時に、わざと取り繕った余裕を外側へ示したくなるほど、彼の心はそわそわしていた。「どうしたね」
|
64 |
+
「お待遠さま。大変遅かったでしょう」「なにそうでもないよ」「少しお手伝いをしていたもんですから」「何の?」
|
65 |
+
「お部屋を片づけてね、それから奥さんの御髪を結って上げたんですよ。それにしちゃ早いでしょう」津田は女の髷がそんなに雑作なく結える訳のものでないと思った。「銀杏返しかい、丸髷かい」下女は取り合わずにただ笑い出した。
|
66 |
+
「まあ行って御覧なさい」「行って御覧なさいって、行っても好いのかい。その返事を先刻からこうして待ってるんじゃないか」「おやどうもすみません、肝心のお返事を忘れてしまって。――どうぞおいで下さいましって」
|
67 |
+
やっと安心した津田は、立上りながらわざと冗談半分に駄目を押した。「本当かい。迷惑じゃないかね。向へ行ってから気の毒な思いをさせられるのは厭だからね」「旦那様はずいぶん疑り深い方ですね。
|
68 |
+
「こっちかい」「今御案内を致します」 下女は先へ立った。夢遊病者として昨夕彷徨った記憶が、例の姿見の前へ出た時、突然津田の頭に閃めいた。「ああここだ」
|
69 |
+
彼は思わずこう云った。事情を知らない下女は無邪気に訊き返した。「何がです」 津田はすぐごまかした。「昨夕僕が幽霊に出会ったのはここだというのさ」
|
70 |
+
下女は変な顔をした。「馬鹿をおっしゃい。宅に幽霊なんか出るもんですか。そんな事をおっしゃると――客商売をする宿に対して悪い洒落を云ったと悟った津田は、賢こく二階を見上げた。「この上だろう、関さんのお室は」
|
71 |
+
「ええ、よく知ってらっしゃいますね」 「うん、そりゃ知ってるさ」 「天眼通ですね」上り口の一番近くにある清子の部屋からもう聴き取れる距離にあった。津田は暗にそれを意識した。
|
72 |
+
「ついでに僕が関さんの室を嗅ぎ分けてやるから見ていろ」 彼は清子の室の前へ来て、ぱたりとスリッパーの音を止めた。「ここだ」 下女は横眼で津田の顔を睨めるように見ながら吹き出した。「どうだ当ったろう」
|
73 |
+
「なるほどあなたの鼻はよく利きますね。猟犬よりたしかですよ」下女はまた面白そうに笑ったが、室の中からはこの賑やかさに対する何の反応も出て来なかった。人がいるかいないかまるで分らない内側は、始めと同じように索寞していた。「お客さまがいらっしゃいました���
|
74 |
+
下女は外部から清子に話しかけながら、建てつけの好い障子をすうと開けてくれた。「御免下さい」一言の挨拶と共に室の中に入った津田はおやと思った。彼は自分の予期通り清子をすぐ眼の前に見出し得なかった。章、終り。
|
75 |
+
津田の足を踏み込んだのは、床のない控えの間の方であった。黒柿の縁と台の付いた長方形の鏡の前に横竪縞の厚い座蒲団を据えて、その傍に桐で拵らえた小型の長火鉢が、普通の家庭に見る茶の間の体裁を、小規模ながら髣髴せしめた。隅には黒塗の衣桁があった。異性に附着する花やかな色と手触りの滑こそうな絹の縞が、折り重なってそこに投げかけられていた。間の襖は開け放たれたままであった。
|
76 |
+
津田は正面に当る床の間に活立らしい寒菊の花を見た。前には座蒲団が二つ向い合せに敷いてあった。濃茶に染めた縮緬のなかに、牡丹か何かの模様をたった一つ丸く白に残したその敷物は、品柄から云っても、また来客を待ち受ける準備としても、物々しいものであった。津田は席につかない先にまず直感した。「すべてが改まっている。
|
77 |
+
これが今日会う二人の間に横わる運命の距離なのだろう」突然としてここに気のついた彼は、今この室へ入り込んで来た自分をとっさに悔いようとした。しかしこの距離はどこから起ったのだろう?室を出るでもなし、席につくでもなし、うっかり眼前の座蒲団を眺めている時に、主人側の清子は始めてその姿を縁側の隅から現わした。それまで彼女がそこで何をしていたのか、津田にはいっこう解せなかった。また何のために彼女がわざわざそこへ出ていたのか、それも彼には通じなかった。
|
78 |
+
あるいは室を片づけてから、彼の来るのを待ち受ける間、しかし不思議な事に、この態度は、しかつめらしく彼の着席を待ち受ける座蒲団や、二人の間を堰くためにわざと真中に置かれたように見える角火鉢ほど彼の気色に障らなかった。津田の知っている清子はけっしてせせこましい女でなかった。彼女はいつでも優悠していた。どっちかと云えばむしろ緩漫というのが、彼女の気質、またはその気質から出る彼女の動作について下し得る特色かも知れなかった。彼は常にその特色に信を置いていた。
|
79 |
+
そうしてその特色に信を置き過ぎたため、かえって裏切られた。少くとも彼はそう解釈した。そう解釈しつつも当時に出来上った信はまだ不自覚の間に残っていた。突如として彼女が関と結婚したのは、身を翻がえす燕のように早かったかも知れないが、それはそれ、これはこれであった。二つのものを結びつけて矛盾なく考えようとする時、悩乱は始めて起るので、離して眺めれば、甲が事実であったごとく、乙もやッぱり本当でなければならなかった。
|
80 |
+
「あの緩い人はなぜ飛行機へ乗った。彼はなぜ宙返りを打った」疑いはまさしくそこに宿るべきはずであった。けれども疑おうが疑うまいが、事実はついに事実だから、けっしてそれ自身に消滅するものでなかった。反逆者の清子は、忠実なお延よりこの点において仕合せであった。
|
81 |
+
それに対する津田の反応ははたしてどうだろう。「また何か細工をするな」彼はすぐこう思うに違なかった。その上清子はただ間を外しただけではなかった。それからその重い物を今まで縁側の隅で持っていたとすれば無論、いったん下へ置いてさらに取り上げたと解釈しても、彼女の所作は変に違なかった。
|
82 |
+
少くとも不器用であった。何だか子供染みていた。しかし彼女の平生をよく知っている津田は、そこにいかにも清子らしい或物を認めざるを得なかった。「滑稽だな。いかにもあなたらしい滑稽だ。
|
83 |
+
そうしてあなたはちっともその滑稽なところに気がついていないんだ」重そうに籃を提げている清子の様子を見た津田は、ほとんどこう云いたくなった。章、終り。百八十四すると清子はその籃をすぐ下女に渡した。下女はどうしていいか解らないので、器械的に手を出してそれを受取ったなり、黙っていた。
|
84 |
+
この単純な所作が双方の間に行われるあいだ、津田は依然として立っていなければならなかった。しかし普通の場合に起る手持無沙汰の感じの代りに、かえって一種の気楽さを味わった彼には何の苦痛も来ずにすんだ。彼はただ間の延びた挙動の引続き��して、平生の清子と矛盾しない意味からそれを眺めた。だから昨夜の記憶からくる不審も一倍に強かった。この逼らない人が、どうしてあんなに蒼くなったのだろう。
|
85 |
+
どうしてああ硬く見えたのだろう。あの驚ろき具合とこの落ちつき方、それだけはどう考えても調和しなかった。彼は夜と昼の区別に生れて初めて気がついた人のような心持がした。彼は招ぜられない先に、まず自分から設けの席に着いた。そうして立ちながら果物を皿に盛るべく命じている清子を見守った。
|
86 |
+
「どうもお土産をありがとう」これが始めて彼女の口を洩れた挨拶であった。話頭はそのお土産を持って来た人から、その土産をくれた人の好意に及ばなければならなかった。もとより嘘を吐く覚悟で吉川夫人の名前を利用したその時の津田には、もうごまかすという意識すらなかった。「道伴になったお爺さんに、もう少しで蜜柑をやっちまうところでしたよ」
|
87 |
+
「あらどうして」津田は何と答えようが平気であった。「あんまり重くって荷になって困るからです」「じゃ来る途中始終手にでも提げていらしったの」 津田にはこの質問がいかにも清子らしく無邪気に聴えた。
|
88 |
+
「馬鹿にしちゃいけません。あなたじゃあるまいし、こんなものを提げて、縁側をあっちへ行ったりこっちへ来たりしていられるもんですか」清子はただ微笑しただけであった。その微笑には弁解がなかった。云い換えれば一種の余裕があった。
|
89 |
+
嘘から出立した津田の心はますます平気になるばかりであった。「相変らずあなたはいつでも苦がなさそうで結構ですね」「ええ」「ちっとももとと変りませんね」「ええ、だって同なじ人間ですもの」
|
90 |
+
この挨拶を聞くと共に、津田は急に何か皮肉を云いたくなった。その時皿の中へ問題の蜜柑を盛り分けていた下女が突然笑い出した。「何を笑うんだ」「でも、奥さんのおっしゃる事がおかしいんですもの」と弁解した彼女は、真面目な津田の様子を見て、後からそれを具体的に説明すべく余儀なくされた。
|
91 |
+
「なるほど、そうに違いございませんね。生きてるうちはどなたも同なじ人間で、生れ変りでもしなければ、誰だって違った人間になれっこないんだから」「ところがそうでないよ。生きてるくせに生れ変る人がいくらでもあるんだから」「へえそうですかね、そんな人があったら、ちっとお目にかかりたいもんだけれども」
|
92 |
+
「お望みなら逢わせてやってもいいがね」「どうぞ」といった下女はまたげらげら笑い出した。「またこれでしょう」 彼女は人指指を自分の鼻の先へ持って行った。
|
93 |
+
「旦那様のこれにはとても敵いません。奥さまのお部屋をちゃんと臭で嗅ぎ分ける方なんですから」「部屋どころじゃないよ。お前の年齢から原籍から、生れ故郷から、何から何まであてるんだよ。この鼻一つあれば」
|
94 |
+
「へえ恐ろしいもんでございますね。――どうも敵わない、旦那様に会っちゃ」下女はこう云って立ち上った。しかし室を出がけにまた一句の揶揄を津田に浴びせた。「旦那様はさぞ猟がお上手でいらっしゃいましょうね」
|
95 |
+
日当りの好い南向の座敷に取り残された二人は急に静かになった。津田は縁側に面して日を受けて坐っていた。清子は欄干を背にして日に背いて坐っていた。津田の席からは向うに見える山の襞が、幾段にも重なり合って、日向日裏の区別を明らさまに描き出す景色が手に取るように眺められた。それを彩どる黄葉の濃淡がまた鮮やかな陰影の等差を彼の眸中に送り込んだ。
|
96 |
+
しかし眼界の豁い空間に対している津田と違って、清子の方は何の見るものもなかった。見れば北側の障子と、その障子の一部分を遮ぎる津田の影像だけであった。彼女の視線は窮屈であった。しかし彼女はあまりそれを苦にする様子もなかった。お延ならすぐ姿勢を改めずにはいられないだろうというところを、始めて津田の眼に映ってくるように思われた。
|
97 |
+
章おわり。百八十五こんな場合にどっちが先へ口を利き出すだろうか、もし相手がお延だとすると、事実は考えるまでもなく明暸であった。彼女は津田に一寸の余裕も与えない女であった。その代り自分にも五分の寛ぎさえ残しておく事のできない性質に生れついていた。彼女はただ随時随所に精一杯の��用をほしいままにするだけであった。
|
98 |
+
勢い津田は始終受身の働きを余儀なくされた。そうして彼女に応戦すべく緊張の苦痛と努力の窮屈さを甞めなければならなかった。ところが清子を前へ据えると、そこに全く別種の趣が出て来た。段取は急に逆になった。相撲で云えば、彼女はいつでも津田の声を受けて立った。
|
99 |
+
だから彼女を向うへ廻した津田は、必ず積極的に作用した。それも十が十まで楽々とできた。二人取り残された時の彼は、取り残された後で始めてこの特色に気がついた。気がつくと昔の女に対する過去の記憶がいつの間にか蘇生していた。今まで彼の予想しつつあった手持無沙汰の感じが、ちょうどその手持無沙汰の起らなければならないと云う間際へ来て、不思議にも急に消えた。
|
100 |
+
彼は伸び伸びした心持で清子の前に坐っていた。そうしてそれは彼が彼女の前で、事件の起らない過去に経験したものと大して変っていなかった。少くとも同じ性質のものに違ないという自覚が彼の胸のうちに起った。したがって談話の途切れた時積極的に動き始めたものは、昔の通り彼であった。しかも昔しの通りな気分で動けるという事自身が、彼には思いがけない満足になった。
|
101 |
+
「関君はどうしました。相変らず御勉強ですか。その後御無沙汰をしていっこうお目にかかりませんが」津田は何の気もつかなかった。会話の皮切に清子の夫を問題にする事の可否は、利害関係から見ても、今日まで自分ら二人の間に起った感情の行掛り上から考えても、またそれらの纏綿した情実を傍に置いた、自然不自然の批判から云っても、実は一思案しなければならない点であった。
|
102 |
+
それを平生の細心にも似ず、一顧の掛念さえなく、ただ無雑作に話頭に上せた津田は、まさに居常お延に対する時の用意を取り忘れていたに違なかった。しかし相手はすでにお延でなかった。津田がその用心を忘れても差支えなかったという証拠は、すぐ清子の挨拶ぶりで知れた。彼女は微笑して答えた。「ええありがとう。
|
103 |
+
まあ相変らずです。時々二人してあなたのお噂を致しております」「ああそうですか。僕も始終忙がしいもんですから、方々へ失礼ばかりして」「良人も同なじよ、あなた。
|
104 |
+
近頃じゃ閑暇な人は、まるで生きていられないのと同なじ事ね。だから自然御互いに遠々しくなるんですわ。だけどそれは仕方がないわ、自然の成行だから」「そうですね」こう答えた津田は、「そうですね」
|
105 |
+
という代りに「そうですか」と訊いて見たいような気がした。「そうですか、ただそれだけで疎遠になったんですか。それがあなたの本音ですか」という詰問はこの時すでに無言の文句となって彼の腹の中に蔵れていた。
|
106 |
+
しかも彼はほとんど以前と同じように単純な、もしくは単純とより解釈のできない清子を眼前に見出した。彼女の態度には二人の間に関を話題にするだけの余裕がちゃんと具っていた。それを口にして苦にならないほどの淡泊さが現われていた。ただそれは津田の暗に予期して掛ったところのもので、同時に彼のかつて予想し得なかったところのものに違なかった。昔のままの女主人公に再び会う事ができたという満足は、彼女がその昔しのままの鷹揚な態度で、関の話を平気で津田の前にし得るという不満足といっしょに来なければならなかった。
|
107 |
+
「どうしてそれが不満足なのか」津田は面と向ってこの質問に対するだけの勇気がなかった。関が現に彼女の夫である以上、彼は敬意をもって彼女のこの態度を認めなければならなかった。けれどもそれは表通りの沙汰であった。偶然往来を通る他人のする批評に過ぎなかった。
|
108 |
+
裏には別な見方があった。そこには無関心な通りがかりの人と違った自分というものが頑張っていた。そうしてその自分に「私」という名を命ける事のできなかった津田は、飽くまでもそれを「特殊な人」と呼ぼうとしていた。
|
109 |
+
彼のいわゆる特殊な人とはすなわち素人に対する黒人であった。無知者に対する有識者であった。もしくは俗人に対する専門家であった。だから通り一遍のものより余計に口を利く権利をもっているとしか、彼には思えなかった。表で認めて裏で首肯わなかった津田の清子に対する心持は、何かの形式で外部へ発現する���が当然であった。
|
110 |
+
章おわり。百八十六「昨夕は失礼しました」津田は突然こう云って見た。それがどんな風に相手を動かすだろうかというのが、彼の覘いどころであった。「私こそ」
|
111 |
+
清子の返事はすらすらと出た。そこに何の苦痛も認められなかった時に津田は疑った。「この女は今朝になってもう夜の驚ろきを繰り返す事ができないのかしら」もしそれを憶い起す能力すら失っているとすると、彼の使命は善にもあれ悪にもあれ、はかないものであった。「実はあなたを驚ろかした後で、すまない事をしたと思ったのです」
|
112 |
+
「じゃ止して下さればよかったのに」「止せばよかったのです。けれども知らなければ仕方がないじゃありませんか。あなたがここにいらっしゃろうとは夢にも思いがけなかったのですもの」「でも私への御土産を持って、わざわざ東京から来て下すったんでしょう」
|
113 |
+
「それはそうですけれども知らなければ仕方がないじゃありませんか。あなたがここにいらっしゃろうとは夢にも思いがけなかったのですもの」。けれども知らなかった事も事実です。昨夕は偶然お眼にかかっただけです」
|
114 |
+
「そうですか知ら」故意を昨夕の津田に認めているらしい清子の口吻が、彼を驚ろかした。「だって、わざとあんな真似をする訳がないじゃありませんか、なんぼ僕が酔興だって」「だけどあなたはだいぶあすこに立っていらしったらしいのね」津田は水盤に溢れる水を眺めていたに違なかった。
|
115 |
+
姿見に映るわが影を見つめていたに違なかった。最後にそこにある櫛を取って頭まで梳いてぐずぐずしていたに違なかった。「迷児になって、行先が分らなくなりゃ仕方がないじゃありませんか」「そう。そりゃそうね。
|
116 |
+
けれども私にはそう思えなかったんですもの」「僕が待ち伏せをしていたとでも思ってるんですか、冗談じゃない。いくら僕の鼻が万能だって、あなたの湯泉に入る時間まで分りゃしませんよ」「なるほど、そりゃそうね」清子の口にしたなるほどという言葉が、いかにもなるほどと合点したらしい調子を帯びているので、津田は思わず吹き出した。
|
117 |
+
「いったい何だって、そんな事を疑っていらっしゃるんです」「そりゃ申し上げないだって、お解りになってるはずですわ」「解りっこないじゃありませんか」「じゃ解らないでも構わないわ。説明する必要のない事だから」
|
118 |
+
津田は仕方なしに側面から向った。「それでは、僕が何のためにあなたを廊下の隅で待ち伏せていたんです。それを話して下さい」「そりゃ話せないわ」「そう遠慮しないでもいいから、是非話して下さい」
|
119 |
+
「遠慮じゃないのよ、話せないから話せないのよ」「しかし自分の胸にある事じゃありませんか。話そうと思いさえすれば、誰にでも話せるはずだと思いますがね」「私の胸に何にもありゃしないわ」単純なこの一言は急に津田の機鋒を挫いた。
|
120 |
+
同時に、彼の語勢を飛躍させた。「なければどこからその疑いが出て来たんです」「もし疑ぐるのが悪ければ、謝まります。そうして止します」「だけど、もう疑ったんじゃありませんか」
|
121 |
+
「だってそりゃ仕方がないわ。疑ったのは事実ですもの。その事実を白状したのも事実ですもの。いくら謝まったってどうしたって事実を取り消す訳には行かないんですもの」「だからその事実を聴かせて下さればいいんです」
|
122 |
+
「事実はすでに申し上げたじゃないの」「それは事実の半分か、三分一です。僕はその全部が聴きたいんです」「困るわね。何といってお返事をしたらいいんでしょう」
|
123 |
+
「訳ないじゃありませんか、こういう理由があるから、そういう疑いを起したんだって云いさえすれば、たった一口で済んじまう事です」 今まで困っていたらしい清子は、この時急に腑に落ちたという顔つきをした。「ああ、それがお聴きになりたいの」「無論です。先刻からそれが伺いたければこそ、こうしてしつこくあなたを煩わせているんじゃありませんか。
|
124 |
+
それをあなたが隠そうとなさるから――」「そんならそうと早くおっしゃればいいのに、私隠しも何にもしませんわ、そんな事。理由は何でもないのよ。ただあなたはそういう事をなさる方なのよ」「待伏せをですか」
|
125 |
+
「ええ」「馬鹿にしちゃいけません」「でも私の見たあなたはそういう方なんだから仕方がないわ。嘘でも偽りでもないんですもの」「なるほど」
|
126 |
+
津田は腕を拱いて下を向いた。章おわり。百八十七しばらくして津田はまた顔を上げた。「何だか話が議論のようになってしまいましたね。僕はあなたと問答をするために来たんじゃなかったのに」
|
127 |
+
清子は答えた。「私にもそんな気はちっともなかったの。つい自然そこへ持って行かれてしまったんだから故意じゃないのよ」「故意でない事は僕も認めます。つまり僕があんまりあなたを問いつめたからなんでしょう」
|
128 |
+
「まあそうね」清子はまた微笑した。津田はその微笑のうちに、例の通りの余裕を認めた時、我慢しきれなくなった。「じゃ問答ついでに、もう一つ答えてくれませんか」「ええ何なりと」
|
129 |
+
清子はあらゆる津田の質問に応ずる準備を整えている人のような答えぶりをした。それが質問をかけない前に、少なからず彼を失望させた。「何もかももう忘れているんだ、この人は」こう思った彼は、同時にそれがまた清子の本来の特色である事にも気がついた。「なったでしょう。
|
130 |
+
自分の顔は見えないから分りませんけれども、あなたが蒼くなったとおっしゃれば、それに違ないわ」「へえ、するとあなたの眼に映ずる僕はまだ全くの嘘吐でもなかったんですね、ありがたい。僕の認めた事実をあなたも承認して下さるんですね」「承認しなくっても、実際蒼くなったら仕方がないわ、あなた」「そう。
|
131 |
+
――それから硬くなりましたね」「ええ、硬くなったのは自分にも分っていましたわ。もう少しあのままで我慢していたら倒れたかも知れないと思ったくらいですもの」「つまり驚ろいたんでしょう」「ええずいぶん吃驚したわ」
|
132 |
+
「それで」と云いかけた津田は、俯向加減になって鄭寧に林檎の皮を剥いている清子の手先を眺めた。滴るように色づいた皮が、ナイフの刃を洩れながら、ぐるぐると剥けて落ちる後に、水気の多そうな薄蒼い肉がしだいに現われて来る変化は彼に一年以上経った昔を憶い起させた。「あの時この人は、ちょうどこういう姿勢で、長い袂を外へ開いている具合、ことごとくその時の模写であったうちに、ただ一つ違うところのある点に津田は気がついた。それは彼女の指を飾る美くしい二個の宝石であった。
|
133 |
+
もしそれが彼女の結婚を永久に記念するならば、そのぎらぎらした小さい光ほど、津田と彼女の間を鋭どく遮ぎるものはなかった。柔婉に動く彼女の手先を見つめている彼の眼は、当時を回想するうっとりとした夢の消息のうちに、燦然たる警戒の閃めきを認めなければならなかった。彼はすぐ清子の手から眼を放して、その髪を見た。しかし今朝下女が結ってやったというその髪は通例の庇であった。何の奇も認められない黒い光沢が、櫛の歯を入れた痕を、行儀正しく竪に残しているだけであった。
|
134 |
+
津田は思い切って、いったん捨てようとした言葉をまた取り上げた。「それで僕の訊きたいのはですね――」 清子は顔を上げなかった。津田はそれでも構わずに後を続けた。「昨夕そんなに驚ろいたあなたが、今朝はまたどうしてそんなに平気でいられるんでしょう」
|
135 |
+
清子は俯向いたまま答えた。「なぜ」「僕にゃその心理作用が解らないから伺うんです」 清子はやっぱり津田を見ずに答えた。「心理作用なんてむずかしいものは私にも解らないわ。
|
136 |
+
ただ昨夕はああで、今朝はこうなの。それだけよ」「説明はそれだけなんですか」「ええそれだけよ」もし芝居をする気なら、津田はここで一つ溜息を吐くところであった。
|
137 |
+
けれども彼には押し切ってそれをやる勇気がなかった。この女の前にそんな真似をしても始まらないという気が、技巧に走ろうとする彼をどことなく抑えつけた。「しかしあなたは今朝いつもの時間に起きなかったじゃありませんか」清子はこの問をかけるや否や顔を上げた。「あらどうしてそんな事を御承知なの」
|
138 |
+
「ちゃんと知ってるんです」清子はちょっと津田を見た眼をすぐ下へ落した。そうして綺麗に剥いた林檎に刃を入れながら答えた。「なるほどあなたは天眼通でなくって天鼻通ね。実際よく利くのね」
|
139 |
+
冗談とも諷刺とも真面目とも片のつかないこの一言の前に、津田は���避いだ。清子はようやく剥き終った林檎を津田の前へ押しやった。「あなたいかが」 章おわり。津田は清子の剥いてくれた林檎に手を触れなかった。
|
140 |
+
「あなたいかがです、せっかく吉川の奥さんがあなたのためにといって贈ってくれたんですよ」「そうね、そうしてあなたがまたわざわざそれをここまで持って来て下すったんですね。その御親切に対してもいただかなくっちゃ悪いわね」清子はこう云いながら、二人の間にある林檎の一片を手に取った。しかしそれを口へ持って行く前にまた訊いた。
|
141 |
+
「しかし考えるとおかしいわね、いったいどうしたんでしょう」「何がどうしたんです」「私吉川の奥さんにお見舞をいただこうとは思わなかったのよ。それからそのお見舞をまたあなたが持って来て下さろうとはなおさら思わなかったのよ」 津田は口のうちで「そうでしょう、僕でさえそんな事は思わなかったんだから」
|
142 |
+
と云った。その顔をじっと見守った清子の眼に、判然した答を津田から待ち受けるような予期の光が射した。彼はその光に対する特殊な記憶を呼び起した。「ああこの眼だっけ」二人の間に何度も繰り返された過去の光景が、ありありと津田の前に浮き上った。
|
143 |
+
その時分の清子は津田と名のつく一人の男を信じていた。だからすべての知識を彼から仰いだ。あらゆる疑問の解決を彼に求めた。自分に解らない未来を挙げて、彼の上に投げかけるように見えた。したがって彼女の眼は動いても静であった。
|
144 |
+
何か訊こうとするうちに、信と平和の輝きがあった。彼はその輝きを一人で専有する特権をもって生れて来たような気がした。自分があればこそこの眼も存在するのだとさえ思った。二人はついに離れた。そうしてまた会った。
|
145 |
+
津田は一種の感慨に打たれた。「それはあなたの美くしいところです。けれどももう私を失望させる美しさに過ぎなくなったのですか。判然教えて下さい」そうしてそこにも二人の間にある意気込の相違を認めた。
|
146 |
+
彼女はどこまでも逼らなかった。どうでも構わないという風に、眼をよそへ持って行った彼女は、それを床の間に活けてある寒菊の花の上に落した。眼で逃げられた津田は、口で追かけなければならなかった。「なんぼ僕だってただ吉川の奥さんの使に来ただけじゃありません」始めてあなたのここにいらっしゃる事を聴かされた上に、ついお土産まで頼まれちまったんです」
|
147 |
+
「そうでしょう。「だからもう変じゃないのよ。訳さえ伺えば、何でも当り前になっちまうのね」 津田はつい「それであなたもどこかお悪いの」津田は言葉少なに病気の顛末を説明した。
|
148 |
+
清子は云った。「でも結構ね、あなたは。そういう時に会社の方の御都合がつくんだから。そこへ行くと良人なんか気の毒なものよ、朝から晩まで忙がしそうにして」「関君こそ酔興なんだから仕方がない」
|
149 |
+
「可哀想に、まさか」「いや僕のいうのは善い意味での酔興ですよ。つまり勉強家という事です」「まあ、お上手だ事」この時下から急ぎ足で階子段を上って来る草履の音が聴えたので、何か云おうとした津田は黙って様子を見た。
|
150 |
+
すると先刻とは違った下女がそこへ顔を出した。「あの浜のお客さまが、奥さまにお午から滝の方へ散歩においでになりませんか、伺って来いとおっしゃいました」「お供しましょう」清子の返事を聴いた下女は、立ち際に津田の方を見ながら「旦那様もいっしょにいらっしゃいまし」と云った。
|
151 |
+
「奥さん」と云おうとして、云い損なった彼はつい「清子さん」と呼び掛けた。「あなたはいつごろまでおいでです」「そりゃ何とも云えないわ」
|
152 |
+
清子はこう云って微笑した。
|
data/train.txt
ADDED
The diff for this file is too large to render.
See raw diff
|
|
data/transcript.txt
ADDED
The diff for this file is too large to render.
See raw diff
|
|
insert_punctuation.py
ADDED
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# %%
|
2 |
+
import torch
|
3 |
+
from transformers import (
|
4 |
+
BertTokenizer,
|
5 |
+
BertForMaskedLM,
|
6 |
+
AutoModelForMaskedLM,
|
7 |
+
AutoTokenizer,
|
8 |
+
BertModel,
|
9 |
+
)
|
10 |
+
import numpy as np
|
11 |
+
import random
|
12 |
+
from itertools import islice
|
13 |
+
from torch.utils.data import Dataset, DataLoader
|
14 |
+
from torch.optim import AdamW
|
15 |
+
from tqdm.auto import tqdm
|
16 |
+
import os
|
17 |
+
|
18 |
+
model_name = "tohoku-nlp/bert-base-japanese-char-v3"
|
19 |
+
tokenizer = BertTokenizer.from_pretrained(model_name)
|
20 |
+
base_model = BertModel.from_pretrained(model_name)
|
21 |
+
|
22 |
+
|
23 |
+
class punctuation_predictor(torch.nn.Module):
|
24 |
+
def __init__(self, base_model):
|
25 |
+
super().__init__()
|
26 |
+
self.base_model = base_model
|
27 |
+
self.dropout = torch.nn.Dropout(0.2)
|
28 |
+
self.linear = torch.nn.Linear(768, 2)
|
29 |
+
|
30 |
+
def forward(self, input_ids, attention_mask):
|
31 |
+
last_hidden_state = self.base_model(
|
32 |
+
input_ids=input_ids, attention_mask=attention_mask
|
33 |
+
).last_hidden_state
|
34 |
+
# get last hidden state token by token and apply linear layer
|
35 |
+
return self.linear(self.dropout(last_hidden_state))
|
36 |
+
|
37 |
+
|
38 |
+
model = punctuation_predictor(base_model)
|
39 |
+
model.load_state_dict(torch.load("punctuation_position_model.pth"))
|
40 |
+
model.eval()
|
41 |
+
|
42 |
+
|
43 |
+
def insert_punctuation(input, comma_pos, period_pos):
|
44 |
+
text = []
|
45 |
+
for i, (c, p) in enumerate(zip(comma_pos, period_pos)):
|
46 |
+
token_id = input[i].item()
|
47 |
+
if token_id > 5:
|
48 |
+
if i < len(input) - 1:
|
49 |
+
if p:
|
50 |
+
text.append(tokenizer.ids_to_tokens[input[i].item()] + "。")
|
51 |
+
elif c:
|
52 |
+
text.append(tokenizer.ids_to_tokens[input[i].item()] + "、")
|
53 |
+
else:
|
54 |
+
text.append(tokenizer.ids_to_tokens[input[i].item()])
|
55 |
+
else:
|
56 |
+
break
|
57 |
+
return "".join(text)
|
58 |
+
|
59 |
+
|
60 |
+
def process_long_text(text, max_length=256, comma_thresh=0.1, period_thresh=0.1):
|
61 |
+
text = text.replace("、", "").replace("。", "")
|
62 |
+
result = ""
|
63 |
+
for i in range(0, len(text), max_length):
|
64 |
+
no_punctuation_text = text[i : i + max_length]
|
65 |
+
inputs = tokenizer(
|
66 |
+
" ".join(list(no_punctuation_text)),
|
67 |
+
max_length=512,
|
68 |
+
padding="max_length",
|
69 |
+
truncation=True,
|
70 |
+
return_tensors="pt",
|
71 |
+
)
|
72 |
+
|
73 |
+
output = model(inputs.input_ids, inputs.attention_mask)
|
74 |
+
output = torch.sigmoid(output)
|
75 |
+
comma_pos = output[0].detach().numpy().T[0] > comma_thresh
|
76 |
+
period_pos = output[0].detach().numpy().T[1] > period_thresh
|
77 |
+
result += insert_punctuation(inputs.input_ids[0], comma_pos, period_pos)
|
78 |
+
return result
|
79 |
+
|
80 |
+
|
81 |
+
# %%
|
82 |
+
if __name__ == "__main__":
|
83 |
+
print(
|
84 |
+
process_long_text(
|
85 |
+
"句読点ありバージョンを書きました句読点があることで僕は逆に読みづらく感じるので句読点無しで書きたいと思います",
|
86 |
+
)
|
87 |
+
)
|
prepare_dataset.py
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# %%
|
2 |
+
txt_file = "data/transcript.txt"
|
3 |
+
|
4 |
+
full_data = []
|
5 |
+
|
6 |
+
with open(txt_file, "r") as f:
|
7 |
+
data = f.readlines()
|
8 |
+
data = [d.strip().split("|")[1] for d in data]
|
9 |
+
full_data.extend(data)
|
10 |
+
# %%
|
11 |
+
data
|
12 |
+
# %%
|
13 |
+
# 。か」で終わるところでsplitする。
|
14 |
+
sentences = []
|
15 |
+
sentence = ""
|
16 |
+
for d in "".join(full_data):
|
17 |
+
if d == "。":
|
18 |
+
sentence += "。"
|
19 |
+
sentences.append(sentence)
|
20 |
+
sentence = ""
|
21 |
+
elif d == "」":
|
22 |
+
sentence += "」"
|
23 |
+
sentences.append(sentence)
|
24 |
+
sentence = ""
|
25 |
+
else:
|
26 |
+
sentence += d
|
27 |
+
len(sentences)
|
28 |
+
# %%
|
29 |
+
train_sentences = sentences[:10000]
|
30 |
+
test_sentences = sentences[10000:]
|
31 |
+
|
32 |
+
# 適当に5sentenceごとに結合して、train.txtに書き込む。
|
33 |
+
with open("data/train.txt", "w") as f:
|
34 |
+
for i in range(0, len(train_sentences), 5):
|
35 |
+
f.write("".join(sentences[i : i + 5]) + "\n")
|
36 |
+
|
37 |
+
with open("data/test.txt", "w") as f:
|
38 |
+
for i in range(0, len(test_sentences), 5):
|
39 |
+
f.write("".join(test_sentences[i : i + 5]) + "\n")
|
train.py
ADDED
@@ -0,0 +1,178 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# %%
|
2 |
+
import torch
|
3 |
+
from transformers import (
|
4 |
+
BertTokenizer,
|
5 |
+
BertForMaskedLM,
|
6 |
+
AutoModelForMaskedLM,
|
7 |
+
AutoTokenizer,
|
8 |
+
BertModel,
|
9 |
+
)
|
10 |
+
import numpy as np
|
11 |
+
import random
|
12 |
+
from itertools import islice
|
13 |
+
from torch.utils.data import Dataset, DataLoader
|
14 |
+
from torch.optim import AdamW, SGD
|
15 |
+
from tqdm import tqdm
|
16 |
+
import os
|
17 |
+
|
18 |
+
|
19 |
+
def index_to_onehot(l, length):
|
20 |
+
# l=[1, 5], len=6 -> [0,1,0,0,0,1]
|
21 |
+
return [1 if i in l else 0 for i in range(length)]
|
22 |
+
|
23 |
+
|
24 |
+
def get_punctuation_position(tokenized_text, tokenizer):
|
25 |
+
# adjust comma_pos and period_pos
|
26 |
+
count = 0
|
27 |
+
comma_pos = []
|
28 |
+
period_pos = []
|
29 |
+
punctuation_removed_text = []
|
30 |
+
comma_id = tokenizer.convert_tokens_to_ids("、")
|
31 |
+
period_id = tokenizer.convert_tokens_to_ids("。")
|
32 |
+
|
33 |
+
for i, c in enumerate(tokenized_text):
|
34 |
+
if c == comma_id:
|
35 |
+
comma_pos.append(i - count - 1)
|
36 |
+
count += 1
|
37 |
+
elif c == period_id:
|
38 |
+
period_pos.append(i - count - 1)
|
39 |
+
count += 1
|
40 |
+
else:
|
41 |
+
punctuation_removed_text.append(c)
|
42 |
+
|
43 |
+
if len(punctuation_removed_text) < 512:
|
44 |
+
punctuation_removed_text += [tokenizer.pad_token_id] * (
|
45 |
+
512 - len(punctuation_removed_text)
|
46 |
+
)
|
47 |
+
|
48 |
+
return (
|
49 |
+
torch.tensor(punctuation_removed_text),
|
50 |
+
[
|
51 |
+
index_to_onehot(comma_pos, 512),
|
52 |
+
index_to_onehot(period_pos, 512),
|
53 |
+
],
|
54 |
+
)
|
55 |
+
|
56 |
+
|
57 |
+
# %%
|
58 |
+
# get_punctuation_position("今日は、いい天気です。")
|
59 |
+
# # %%
|
60 |
+
# index_to_onehot([1, 2, 3, 4, 5], 7)
|
61 |
+
# tokenizer = BertTokenizer.from_pretrained("cl-tohoku/bert-base-japanese-char")
|
62 |
+
# tokenized_text = tokenizer(
|
63 |
+
# "今 日 は 、 い い 天 気 で す 。",
|
64 |
+
# max_length=512,
|
65 |
+
# padding="max_length",
|
66 |
+
# truncation=True,
|
67 |
+
# return_tensors="pt",
|
68 |
+
# )
|
69 |
+
# inputs, label = get_punctuation_position(tokenized_text["input_ids"][0], tokenizer)
|
70 |
+
# print(inputs) # ->tensor([ 2, 732, 48, 12, 19, 19, 411, 343, 17, 46, 3, 0, 0, 0, ...])
|
71 |
+
# print(label) # -> [[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, ...], # 点の位置(最初に[SOS]が入るため、1つずれる)
|
72 |
+
# -> [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, ...]] # 丸の位置
|
73 |
+
|
74 |
+
|
75 |
+
# %%
|
76 |
+
class PunctuationPositionDataset(torch.utils.data.Dataset):
|
77 |
+
def __init__(self, data, tokenizer):
|
78 |
+
self.data = data
|
79 |
+
self.tokenizer = tokenizer
|
80 |
+
|
81 |
+
def __len__(self):
|
82 |
+
return len(self.data)
|
83 |
+
|
84 |
+
def __getitem__(self, idx):
|
85 |
+
text = self.data[idx]
|
86 |
+
text = " ".join(list(text))
|
87 |
+
inputs = self.tokenizer(
|
88 |
+
text,
|
89 |
+
max_length=512,
|
90 |
+
padding="max_length",
|
91 |
+
truncation=True,
|
92 |
+
return_tensors="pt",
|
93 |
+
)
|
94 |
+
# if idx % 100 == 0:
|
95 |
+
# print(masked_text, label)
|
96 |
+
input_ids, label = get_punctuation_position(
|
97 |
+
inputs["input_ids"][0], self.tokenizer
|
98 |
+
)
|
99 |
+
|
100 |
+
label = torch.tensor(label, dtype=torch.float32).transpose(0, 1)
|
101 |
+
|
102 |
+
return (input_ids, inputs.attention_mask.squeeze(), label.squeeze(), text)
|
103 |
+
|
104 |
+
|
105 |
+
# %%
|
106 |
+
model_name = "tohoku-nlp/bert-base-japanese-char-v3"
|
107 |
+
tokenizer = BertTokenizer.from_pretrained(model_name)
|
108 |
+
base_model = BertModel.from_pretrained(model_name)
|
109 |
+
|
110 |
+
|
111 |
+
# %%
|
112 |
+
class punctuation_predictor(torch.nn.Module):
|
113 |
+
def __init__(self, base_model):
|
114 |
+
super().__init__()
|
115 |
+
self.base_model = base_model
|
116 |
+
self.dropout = torch.nn.Dropout(0.2)
|
117 |
+
self.linear = torch.nn.Linear(768, 2)
|
118 |
+
|
119 |
+
def forward(self, input_ids, attention_mask):
|
120 |
+
last_hidden_state = self.base_model(
|
121 |
+
input_ids=input_ids, attention_mask=attention_mask
|
122 |
+
).last_hidden_state
|
123 |
+
# get last hidden state token by token and apply linear layer
|
124 |
+
return self.linear(self.dropout(last_hidden_state))
|
125 |
+
|
126 |
+
|
127 |
+
model = punctuation_predictor(base_model)
|
128 |
+
# %%
|
129 |
+
# a = tokenizer("今 日 は い い 天 気 で す 。",max_length=512,
|
130 |
+
# padding="max_length",
|
131 |
+
# truncation=True,
|
132 |
+
# return_tensors="pt",)
|
133 |
+
# %%
|
134 |
+
with open("data/train.txt", "r") as f:
|
135 |
+
texts = f.readlines()
|
136 |
+
|
137 |
+
dataset = PunctuationPositionDataset(texts, tokenizer)
|
138 |
+
# %%
|
139 |
+
data_loader = DataLoader(
|
140 |
+
dataset,
|
141 |
+
batch_size=16,
|
142 |
+
shuffle=True,
|
143 |
+
num_workers=8,
|
144 |
+
)
|
145 |
+
# %%
|
146 |
+
# set lr to 5e-5 to base model
|
147 |
+
|
148 |
+
optimizer = AdamW(
|
149 |
+
[
|
150 |
+
{"params": model.base_model.parameters(), "lr": 5e-5},
|
151 |
+
{"params": model.linear.parameters(), "lr": 1e-3},
|
152 |
+
],
|
153 |
+
)
|
154 |
+
|
155 |
+
criteria = torch.nn.BCEWithLogitsLoss()
|
156 |
+
# %%
|
157 |
+
model.train()
|
158 |
+
model.to("cuda")
|
159 |
+
for epoch in range(10):
|
160 |
+
epoch_loss = 0.0
|
161 |
+
progress_bar = tqdm(data_loader, desc=f"Epoch {epoch+1}")
|
162 |
+
for batch in progress_bar:
|
163 |
+
input_ids, attention_masks, labels, text = batch
|
164 |
+
input_ids = input_ids.to("cuda")
|
165 |
+
attention_masks = attention_masks.to("cuda")
|
166 |
+
labels = labels.to("cuda")
|
167 |
+
|
168 |
+
outputs = model(input_ids=input_ids, attention_mask=attention_masks)
|
169 |
+
loss = criteria(outputs, labels)
|
170 |
+
|
171 |
+
loss.backward()
|
172 |
+
optimizer.step()
|
173 |
+
optimizer.zero_grad()
|
174 |
+
|
175 |
+
epoch_loss += loss.item()
|
176 |
+
progress_bar.set_postfix({"loss": epoch_loss / len(data_loader)})
|
177 |
+
# %%
|
178 |
+
torch.save(model.state_dict(), "punctuation_position_model.pth")
|
weight/punctuation_position_model.pth
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:3f6bf455e4aa72ee9f46701559d666dc844ecc59910a0e83d66d8a0d810f29de
|
3 |
+
size 365846615
|