日本語小論文データの構築について発表します(2021/9/16 木)

言語資源協会GSKから 日本語小論文データ(GSK2021-B)を公開しました.このデータ構築において特に人手による評点付与の際に気を付けた点や結果について電子情報通信学会のNLC(言語理解とコミュニケーション研究会)で 2021年 9月 16日で発表します.データについてなにか質問のある方などは参加されますと直接お答えできると思います.

Pukiwiki 1.4.5_1 (EUC)を Pukiwiki 1.5.0(UTF-8)に更新したときのメモ (2021/4)

研究室で使ってるpukiwikiが突如真っ白

かなり昔から使っていたのですが表示ができなくなり更新しました.文字列がEUCで作成していたのでUTF-8にする必要があります.かなり苦労したので少しメモを残しておきます.web上の記述もほとんどないですね.(3ヶ月前に行ったときの記憶で書くので少し違うかも知れません)

やること

  1. pukiwiki1.4.5_1を pukiwiki1.5.0に更新
  2. EUCで書かれている部分を全部 UTF-8にする (これがホントに大変)

(ただし attacheの部分はできていません.更新の際に捨てました)

新規pukiwiki1.5.0のインストール

これはほとんど問題なし.公式を参考にdowload先から utf8版のpukiwiki1.5.0を選択してdownload./var/wwwなど htmlを展開しているところに置くとまずすぐ動いた.

旧pukiwiki (EUCで書かれている) を文字列を変更して移行

/var/www などの下でおいている pukiwiki/ 以下のバックアップをとる

基本的にattach、backup、cache、counter、diff、wiki の以下のファイルをpukiwiki1.5.0と同じ場所に置くと良い.ただし,ファイル名がDEC9CDF8.txtなどとencodeされていて,これが全部EUCになっているものをUTF-8にしないと表示されない...

encs.phpを使って各EUCエンコードされたファイル名(中身もEUC)のものはUTF-8エンコードしたファイル名(中身はEUCのまま)に変換する

まずencls.phpというものをdownload(公式のどこかに指示がありました).しかし使い方に説明無し.これは 1) 指定したディレクトリについて 2) 指定した suffixのファイルを (.txt) を読み込んで 3)指定した文字エンコードにencodeした名前を stdoudに出力するだけです.なので実行しても基本的になにも変化がありません.

そこでencs.phpを下記のように書き換えました(一部表示).やっていることは1)指定のディレクトリのファイル.suffixを読み込んで 新規に サブディレクトリ tmp/の下に UTF-8のファイル名でファイルをコピーしたものを作るというものです.wikiのデイレクトリがだいたい本体で.txtだけですが cache (pukiwikiだと左側の更新リストで表示されるところ)が .refとかあるので,それぞれのデイレクトリで少しずつ実行して UTF-8のタイトルに変更した(かつ中身の文字列もEUCからUTF-8)ファイルを作成します.

// Do
mb_internal_encoding(SOURCE_ENCODING);
mb_detect_order('auto');
$write_dir = './tmp/';   //これ加えた
$matches = array();
foreach ($argv as $arg) {
        if (preg_match('/^(.+)(\.[a-zA-Z0-9]+)$/', $arg, $matches)) {
                $name   = $matches[1];
                $suffix = $matches[2];
        } else {
                $name   = $arg;
                $suffix = '';
        }
        //echo $name . $suffix . "\n";          // As-is
        if ($f_decode) {
                // Decord
                echo decode($name) . $suffix . "\n";
        } else {
                // Decord -> convert -> encode
                echo encode(mb_convert_encoding(decode($name),
                        TARGET_ENCODING, SOURCE_ENCODING)) .
                        $suffix . "\n";
                // copy files with new names  <<<< ここを書き換えている.ここから copyまで
                $euc_f_name = $name . $suffix ;
                $utf8_f_name = $write_dir . encode(mb_convert_encoding(decode($name), 
                        TARGET_ENCODING, SOURCE_ENCODING)) .
                        $suffix;
                copy($euc_f_name,$utf8_f_name);
        }
        //echo "\n";
}

上記の部分は単に tmpファイルに ファイル名をUTF-8に変換するだけです.

まず自分のpukiwikiの全体をコピー作業用puwkiwkiを /home/jibun/old_pukiwikiとして, wikiのディレクトリについて作業するとします.
先に,/home/jibun/old_pukiwiki/wiki/tmp を作成しておきます

mkdir /home/jibun/old_pukiwiki/wiki/tmp

それで下記のように実行します

cd /home/jibun/old_pukiwiki/wiki
php (enc.phpへのパス)/encls.php --all 

すると /home/jibun/old_pukiwiki/wiki/tmp の下に utf-8名になったファイルがコピーされます (中身の文字はEUCのまま).

次に, /home/jibun/old_pukiwiki/wiki/tmp の下のファイルの中身をEUCから UTF-8に変更します.
nkfを使いました.CentOS7上では下記のように実行しました.

cd /home/jibun/old_pukiwiki/wiki/tmp
find . -type f -print0 | xargs -0 -n 256 nkf --overwrite -w -Lu 

この内容を pukiwiki1.5.0の wikiの下にコピーすると見えます.他のディレクトリも同様です.

cacheの変換

cacheディレクトリの場合は他のタイプのファイルもあるのでそれも変換します.

mkdir /home/jibun/old_pukiwiki/cache/tmp
cd /home/jibun/old_pukiwiki/cache/
php (enc.phpへのパス)/encls.php --suffix='.ref' --all
php (enc.phpへのパス)/encls.php --suffix='.rel' --all

これとファイル名がautolink.datなど英語表記で変換しないものもあるのでそれはコピーします.

cp *.dat tmp/
cp *.html tmp/

このあと中身をutf-8にします

cd /home/jibun/old_pukiwiki/cache/tmp 
find . -type f -print0 | xargs -0 -n 256 nkf --overwrite -w -Lu

cache/tmpの内容を 新規  pukiwiki1.5.0の cacheの下に置くと左側に履歴がでると思います

あとのbackupなどはほとんど使って無かったので変換しましたが確認していません.
あと,attacheですが,ファイル名との関係が複雑で (attacheファイルが windowsの shift-jisのテキストなどいろいろあり,また何番目のファイルがattacheされていかなど管理されているのですが,そこを復元するのが難しいそうなのでしませんでした.

言語処理学会年次大会(2021/3)で発表しました

言語処理学会年次大会(2021/3)で発表しました

  • 小論文採点支援に関するもの
    • 江島知優, 堀江遼河, 竹内孔一. BERT を利用した日本語小論文採点支援システムの検討, E2-4, 3月16日
    • 竹内孔一, 大野雅幸, 泉仁宏太, 田口雅弘, 稲田佳彦, 飯塚誠也, 阿保達彦, 上田均. 模擬試験による研究利用可能な日本語小論文データの構築と採点,
      ワークショップ 「文章の評価と品質推定」WS3-3, 3月19日
  • パタンマッチシステム
    • 小笠原崇, 竹内孔一. 意味役割付与テキストに対するPrologベースの探索木による言語パタンマッチシステム構築, C5-1,3月17日
    • 岡田魁人, 竹内孔一. Blocklyを利用したタグ付きコーパス検索パタン構築ツール, D7-2, 3月18日
  • 述語項構造シソーラス関係
    • 竹内孔一, アラステアバトラー, 長崎郁, プラシャントパルデシ. NPCMJへのPropBank形式の意味役割と概念フレームの付与の進捗報告, E8-4, 3月18日

述語シソーラスに関する論文が LREC2020に掲載されました(2020/6/26)

LREC2020 に述語シソーラスに関する下記の論文が掲載されました

Koichi Takeuchi, Alastair Butler, Iku Nagasaki, Takuya Okamura and Prashant Pardeshi

Constructing Web-Accessible Semantic Role Labels and Frames for Japanese as Additions to the NPCMJ Parsed Corpus
Proceedings of the 12th Language Resources and Evaluation Conference
pp.3153-3161

サイト http://www.lrec-conf.org/proceedings/lrec2020/index.html

KyotoCorpus4.0とNTC1.5を復元する際のエラー (2019/12/18)

京都大学コーパス4.0およびNAIST Text Corpus 1.5 を取り出す部分で少し苦労したので書いておきます.
NAIST Text Corpus は京都大学コーパスが完成しないと作ることができないので,京都大学コーパスを正確に取り出すのが重要です.

京都大学コーパス4.0
は毎日新聞95年版のデータにタグ付けされたコーパスで,復元には,毎日新聞95年のデータと上記のリンクからdownloadしたプログラムが必要です.

Ubuntu18.04LTSで実行するとエラーが出て取り出せませんでした.

euc-jp "\xE3" does not map to Unicode at ./src/dupli.pl line 16, line 584.

どうもUbuntuのlocaleを変えるのは大変そうなのでCentOS 6系,7系 のマシンで下記を実行します

  1. CentOS系にデータをコピー
  2. src/format.pl と src/dupli.plの上記の部分を変更

    format.pl

    use encoding 'euc-jp';
    #use open IO => ':encoding(euc-jp)';
    #binmode(STDERR, ':encoding(euc-jp)');
    #binmode STDOUT, ':encoding(euc-jp)';
    use encoding 'euc-jp', STDOUT => 'euc-jp';


    dupli.pl は追加
    use encoding 'euc-jp', STDOUT => 'euc-jp';

    これで付属の auto_conv を実行する.

  3. 950106.KNPの部分が全角空白が1つずれるため周辺を手で修正
    950106 の最初の記事がずれました

    dat/rel/950106.KNP これは dat/syn/950106.KNPも同様にずれています
    # S-ID:950106001-001 部分削除:0:  部分削除:12:蔵相 KNP:2002/12/11 MOD:2004/12/29
    * 0 1D
    + 0 2D
     さきが さきがけ * 名詞 組織名 * *
    け の * 助詞 接続助詞 * *
    * 1 3P
    + 1 2D
    の武 たけむら * 名詞 人名 * *
    村正 まさよし * 名詞 人名 * *

    元の文(dat/num/950106.org)をみると

    # S-ID:950106001-001
     さきがけの武村正義代表(蔵相)と社会党の五島正規副書記長が.....

    と全角空白がはいっている.この除去に失敗しているようす.
    別の環境でためしたときに,たまたまうまくいっていたデータがあったので 950106.KNPだけコピーしました

    dat/rel/950106.KNP と dat/syn/950106.KNP を修正
  • 追加情報2019/12/27
  • 他にタグがずれているところ(全角空白がいろいろおこるみたい)
    S-ID:950104062-001
    ここも人手で修正する必要あり

    # S-ID:950104062-001 部分削除:0: ◇ KNP:2002/08/22 MOD:2005/03/01
    * 0 2D
    + 0 3D
      つま * 名詞 普通名詞 * *
    ◇ が * 助詞 格助詞 * *
    * 1 2D
    + 1 2D
    妻 「 * 特殊 括弧始 * *
    が「 フル フルだ 形容詞 * ナ形容詞 語幹
    + 2 3D
    フルタ タイム * 名詞 普通名詞 * *
    イ 」 * 特殊 括弧終 * *

つぎに,NTC1.5について.
まず,実行後, dat/ntc/knp または ipaのしたでできたファイルが2927個あることを確認します.無いとどこかで,ファイルが生成されていないので,実験の際に数値がかわなくなります.
KyotoCorpusを上記のように修正して作成したのだが,残念ながら,同じところで反対の現象がおこるので手で修正する必要があります.

NTC1.5では NTC_1.5/dat/ntc/knp に京都大学コーパスフォーマットのデータが作成される.
これは問題なくできました.
NTC_1.5/dat/ntc/ipa/ 側の場合, 950106 の記事が今度は全角空白の分のタグが存在しており,ずれてしまいます.

ipa/950106-0000-950106001.ntc

# S-ID:950106001-001 部分削除:0:  部分削除:12:蔵相 KNP:2002/12/11 MOD:2004/12/29
* 0 1D 1/0
さ     記号-空白 _ _ O _
きがけの サキガケ さきがけ 名詞-固有名詞-組織 _ _
B-ORGANIZATION _
* 1 3P 3/0
武 ノ の 助詞-連体化 _ _ O _
村正 タケムラ 武村 名詞-固有名詞-人名-姓 _ _ B-PERSON
_
義代 マサヨシ 正義 名詞-固有名詞-人名-名 _ _ I-PERSON
_
表と ダイヒョウ 代表 名詞-サ変接続 _ _ O _

これは手で修正するしかないようですね....この文だけなので NTC_1.5/dat/ntc/ipa/側のデータではなく NTC_1.5/dat/ntc/knp/側のデータで処理するとよいかもしれません.

他にずれているところがないかはプログラム処理していくなかでエラーが出ないかぎりなかなか気がつかない.ということで近年のutf8環境でタグ付きコーパスを復元するのは難しいということがわかりました.

Ubuntu18.04インストールメモ(supermicroサーバ)

Ubuntu18.04をインストールした際のメモ. (2019/11/18)
GPUを積んでnvidiaのドライバを書き換えていたマシンにUbuntu18.04を新たにインストールする場合

(キーワード: Ubuntu18.04 LTS supermicro install 失敗 起動しない /dev/sda clean 繰り返し)

ライブUSBをさして,インストールし,HDDに書き込めたがその後,立ちあがらず.
原因はこれ https://askubuntu.com/questions/882385/dev-sda1-clean-this-message-appears-after-i-startup-my-laptop-then-it-w

nvidiaのドライバが立ち上げをとめていたみたい.

なので,まずライブUSBの起動 (BIOSから UEFI:USB....を #1の優先順位にもってくる)
そのとき「try Ubuntu」を選択 (installではない)
たちあがったUbuntuで, ターミナルを開く

sudo apt-get purge nvidia*

これを実行. なんとこの時,日本語のキーボードのmapがおかしく, 「*」は Shift+「8」のキーだった
これで,今度は先にインストールしておいたHDDを BIOSで優先順位#1に設定して再起動

無事に立ちあがった.

GPUを利用している場合はlinuxのインストールでいろいろ起こる見たいです.

Pacling2019で博士前期課程1年の國府さんが発表しました (2019/10/13)

Pacling2019で博士前期課程1年の國府さんが発表しました (2019/10/13)
Daiki Ko (Okayama Univ) and Koichi Takeuchi,
Evaluation of Embedded Vectors for Lexemes and Synsets Toward Expansion of Japanese WordNet, in Proceedings of the 16th International Conference of the Pacific Association for Computational Linguistics, (Paper #41), 2019. (8 pageあります)
内容としては日本語WordNetに対して,未登録の単語のsynsetを分散表現ベクトルを利用して探すというものです.少ない数ですが人手で結果を調べたところ,モデルが出力する上位10件のsynsetのうち,30%程度の正しく得られました.