コーパス言語学実践 2006 年度 2 学期 第 9 回. 2 本日の内容 これまでと同様の作業 – プログラムで処理するケースの紹介.

Slides:



Advertisements
Similar presentations
第 2 章 数値の入力と変数 scanf と変数をやります 第 2 章 数値の入力と変数 1. 以下のプログラムを実行してみよう  C 言語では文の最後に「 ; 」(セミコロン)が付きます 第 2 章 数値の入力と変数 2 #include int main() { int x; x = 3; printf("x.
Advertisements

Licsu-Web データ自由自在! 「図書系職員のためのアプリケーション講習会」. Licsu-Web のデータを自在に 加工してみましょう! Licsu-Web からデータを取り出して、オリジ ナル帳票を作成したり、 Excel で集計しやす いように加工してみましょう。 ここで、テキスト処理(=図書館でもっとも.
コーパス言語学実践 2006 年度 2 学期 第 7 回. 2 本日の内容 前回までのまとめ – ファイルの確認 – ファイルの分割 – エクセルでの作業(品詞構成比率 延べ語 数) 品詞構成比率(異なり語数) データ収集(占いのことば)
情報アプリケーション1 2006 年 10 月 12 日 第四回資料 担当 重定 如彦. 目次 データの送信とフォーム クイズ CGI 複数のパーツのデータの分割方法 配列変数.
情報処理 第8回第8回第8回第8回. 目次 (1) スタイルの利用 – スタイルの概要 – スタイルの適用 (1) – 「スタイル」ウィンドウを開く – スタイルの適用 (2) – スタイル適用のセオリー – すべてのスタイルを表示 – スタイルの書式を変える (1) – スタイルの書式を変える (2)
1 第5回 配列. 2 今回の目標 マクロ定義の効果を理解する。 1次元配列を理解する。 2次元配列を理解する。 ☆2 × 2の行列の行列式を求めるプログラ ムを作成する.
オブジェクト指向言語・ オブジェクト指向言語演習 中間試験回答例. Jan. 12, 2005 情報処理技術基礎演習 II 2 オブジェクト指向言語 中間試験解説 1  (1) 円柱の体積(円柱の体積 = 底面の円の面積 x 高さ) を求めるプログラムを作成しなさい。ただし、出力結果は、入 力した底面の円の半径.
復習 配列変数の要素 5は配列の要素数 これらの変数をそれぞれ配列の要素と呼ぶ この数字を配列の添え字,またはインデックスと呼ぶ
復習 配列変数の要素 5は配列の要素数 これらの変数をそれぞれ配列の要素と呼ぶ この数字を配列の添え字,またはインデックスと呼ぶ
Generic programming と STL
プログラムのパタン演習 解説.
情報処理実習 第05回 Excelマクロ機能入門 操作マクロ入門.
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
JavaScript プログラミング入門 2006/11/10 神津.
プログラミング入門2 第4回 配列 for文 変数宣言 初期化
プログラミング言語としてのR 情報知能学科 白井 英俊.
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
第2章 数値の入力と変数 scanfと変数をやります.
言語処理系(4) 金子敬一.
ファーストイヤー・セミナーⅡ 第8回 データの入力.
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
第13回 プログラミングⅡ 第13回
コーパス言語学実践 2006年度2学期 第5回.
独習Java ・ 10.6  Hashtableクラス ・ 10.7  String Tokenizerクラス  12月12日    小笠原 一恵.
Webコミュニケーショングループ ~PHPの基礎~ M1 宮崎 真.
アルゴリズムとデータ構造 2011年6月13日
第6章 2重ループ&配列 2重ループと配列をやります.
構造体.
情報アプリケーション1 2008年 12月 3日 第四回資料 担当 重定 如彦 .
データ構造とアルゴリズム論 第2章 配列(構造)を使った処理
2016年度 植物バイオサイエンス情報処理演習 第9回 情報処理(5) データを集計する
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
関数と配列とポインタ 1次元配列 2次元配列 配列を使って結果を返す 演習問題
プログラミング論 II 2008年10月30日 文字列
ソートアルゴリズムの種類 選択ソート (selection sort) バブルソート (bubble sort)
第10章 これはかなり大変な事項!! ~ポインタ~
アルゴリズムとデータ構造 補足資料5-2 「サンプルプログラムsetop.c」
前回の練習問題.
情報アプリケーション1 2006年 10月 19日 第四回資料 担当 重定 如彦 .
2016年度 植物バイオサイエンス情報処理演習 第6回 情報処理(4) データを加工する・2
P n ポインタの基礎 5 q m 5 7 int* p; int 型の変数を指すポインタ int* q; int 型の変数を指すポインタ int n=5, m=7; int 型の変数 int array[3]; int* pArray[3]; p = &n; ポインタにアドレスを代入しているのでOK.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング基礎B 文字列の扱い.
プログラミング 4 整列アルゴリズム.
情報基礎演習I(プログラミング) 第11回 7月12日 水曜5限 江草由佳
C言語 はじめに 2016年 吉田研究室.
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
統計ソフトウエアRの基礎.
第1章 いよいよプログラミング!! ~文章の表示 printf~
アルゴリズムとプログラミング (Algorithms and Programming)
文字列へのポインタの配列 static char *lines[MAXLINES]; lines[0] NULL
プログラミング入門 電卓を作ろう・パートI!!.
アルゴリズムとデータ構造 2012年6月11日
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング入門2 第5回 配列 for文 変数宣言 初期化
2019/6/6 リストを格納する変数 配列と連想配列.
プログラミング論 文字列
コンパイラ 2012年10月11日
プログラミング 4 文字列.
情報処理Ⅱ 2005年11月25日(金).
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
プログラミング基礎a 第5回 C言語によるプログラミング入門 配列と文字列
プログラミング入門2 第5回 配列 変数宣言、初期化について
第4回 配列.
第2章 数値の入力と変数 scanfと変数をやります.
分岐(If-Else, Else if, Switch) ループ(While, For, Do-while)
第5回 配列.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
情報処理3 第4回目講義         担当 鶴貝 達政 12/17/2019.
Presentation transcript:

コーパス言語学実践 2006 年度 2 学期 第 9 回

2 本日の内容 これまでと同様の作業 – プログラムで処理するケースの紹介

3 perl のプログラム( 1 ) 述べ語数で各品詞の語数を計算する wc_nobe.pl perl wc_nobe.pl < gingatetsudono_yoru08.txt

4 perl のプログラム( 2 ) 異なり語数で各品詞の語数を計算する wc_kotonari.pl perl wc_kotonari.pl < gingatetsudono_yoru08.txt

5 プログラムを理解するヒント ( 1 ) split 関数 連想配列 foreach という構文

6 split 関数補足( 1 ) split 関数と配列の関係 split 関数は第1引数で指定した区切り子 (文字列)で,第2引数で指定した文字 列の中身を区切り,その結果を配列に代 = split(/ ☆ /, $line);

7 split 関数の補足( 2 ) = split(/ ☆ /, $line); $line=” サラダ☆ 380 ☆ レタス, ツナ, ブロッコリー, ドレッシング, たまねぎ ☆ 260”; だとすると

8 split 関数の補足( 3 ) = split(/ ☆ /, ” サラダ☆ 380 ☆ レタス, ツナ, ブロッコリー, ドレッシング, たまねぎ ☆ 260”); こんな感じで, 区切り子は「☆」ということになります.

9 split 関数の補足( 4 ) split 関数では サラダ☆ 380 ☆レタス, ツナ, ブロッコリー, ドレッ シング, たまねぎ☆ 260 split 関数では,指定された文字列の中に = split(/ ☆ /, $line);

10 split 関数の補足( 5 ) split 関数では サラダ☆ 380 ☆レタス, ツナ, ブロッコリー, ドレッ シング, たまねぎ☆ 260 = split(/ ☆ /, $line);

11 split 関数の補足( 6 ) split 関数では サラダ☆ 380 ☆レタス, ツナ, ブロッコリー, ドレッ シング, たまねぎ☆ 260 ここまでの値を = split(/ ☆ /, $line); サラダ

12 split 関数の補足( 7 ) split 関数では サラダ☆ 380 ☆レタス, ツナ, ブロッコリー, ドレッ シング, たまねぎ☆ 260 = split(/ ☆ /, $line); サラダ

13 split 関数の補足( 8 ) split 関数では サラダ☆ 380 ☆レタス, ツナ, ブロッコリー, ドレッ シング, たまねぎ☆ 260 = split(/ ☆ /, $line); サラダ

14 split 関数の補足( 9 ) split 関数では サラダ☆ 380 ☆レタス, ツナ, ブロッコリー, ドレッ シング, たまねぎ☆ 260 ここまでを = split(/ ☆ /, $line); サラダ 380 1

15 split 関数の補足( 10 ) split 関数では サラダ☆ 380 ☆レタス, ツナ, ブロッコリー, ドレッ シング, たまねぎ☆ 260 = split(/ ☆ /, $line); サラダ 380 1

16 split 関数の補足( 11 ) split 関数では サラダ☆ 380 ☆レタス, ツナ, ブロッコリー, ドレッ シング, たまねぎ☆ 260 = split(/ ☆ /, $line); サラダ 380 1

17 split 関数の補足( 12 ) split 関数では サラダ☆ 380 ☆レタス, ツナ, ブロッコリー, ドレッ シング, たまねぎ☆ 260 ここまでを = split(/ ☆ /, $line); サラダ レタス, ツナ, ブロッコ リー, ドレッシング, たまねぎ 2

18 split 関数の補足( 13 ) split 関数では サラダ☆ 380 ☆レタス, ツナ, ブロッコリー, ドレッ シング, たまねぎ☆ 260 = split(/ ☆ /, $line); サラダ レタス, ツナ, ブロッコ リー, ドレッシング, たまねぎ 2

19 split 関数の補足( 14 ) split 関数では サラダ☆ 380 ☆レタス, ツナ, ブロッコリー, ドレッ シング, たまねぎ☆ 260 文字列の最後まで = split(/ ☆ /, $line); サラダ レタス, ツナ, ブロッコ リー, ドレッシング, たまねぎ 2

20 split 関数の補足( 15 ) split 関数では サラダ☆ 380 ☆レタス, ツナ, ブロッコリー, ドレッ シング, たまねぎ☆ 260 ここまでを = split(/ ☆ /, $line); サラダ レタス, ツナ, ブロッコ リー, ドレッシング, たまねぎ

21 split 関数の補足( 16 ) split 関数では サラダ☆ 380 ☆レタス, ツナ, ブロッコリー, ドレッ シング, たまねぎ☆ 260 これで split 関数の = split(/ ☆ /, $line); サラダ レタス, ツナ, ブロッコ リー, ドレッシング, たまねぎ

22 split 関数の補足( 17 ) while(<>) { = split(/\t/, $_); print(“$a[0] - $a[1] - $a[2] - $a[3]\n”); } exit; splittest.pl として保存 perl splittest.pl < gingatetsudono_yoru08.txt

23 連想配列(1) perl には,連想配列と呼ばれる配列がある. 特徴:添え字に文字列が使える – 連想配列には%に続けて名前をつける. 例:% array という連想配列 要素 ( 中 身) 添え字 (インデック ス) $array{“ 松 ”}=2000; $array{“ 竹 ”}=1500; $array{“ 梅 ”}=1000; 上松松竹梅 $array{“ 上松 ”}=3000;

24 連想配列( 2 ) 連想配列の使い方(参照) – 各要素を個別に参照 print “ 上松の中身は ”. $a{“ 上松 ”}. “\n”; print “ 松の中身は ”. $a{“ 松 ”}. “\n”; print “ 竹の中身は ”. $a{“ 竹 ”}. “\n”; print “ 梅の中身は ”. $a{“ 梅 ”}. “\n”; %a 上松 松 竹 梅 添え字 中身

25 連想配列( 3 ) 練習 renso01.pl をダウンロードして実行 y:\corpus> perl renso01.pl 連想配列 a に値を代入. 値の出力がされているはず. を確かめる.

26 連想配列( 4 ) wc_nobe.pl = split(/\t/, $_); $count{$a[3]}++; ← ここが連想配列 –split 関数で タブで区切った,すると $a[?] に値が入 る –$a[3] には,品詞が入っている. – 品詞を 添え字 にして $count{ 品詞 } という連想配 列 「++」は 1 つ数字を足すという意味

27 foreach という構文( 1 ) 繰り返し構文として foreach というのが ある –wc_nobe.pl では foreach $key (sort keys %count) { printf ("%s\t%d\n", $key, $count{$key}); } 連想配列 %count の添え字を $key に入れ る 添え字はソートして順番に取り出す

28 foreach という構文( 2 ) –wc_kotonari.pl では foreach $key (keys %count0) = split(/ /, $key); $count{$b[0]}++; } というのもある.ソートしないで取り出す.

29 foreach という構文( 3 ) while($_=<>) { = split(/\t/, $_); $soeji=$a[3]. " ". $a[0]. " ". $a[1]. " ". $a[2]; $count0{$soeji}++; } foreach $key (keys %count0) = split(/ /, $key); $count{$b[0]}++; } foreach $key (sort keys %count) { printf ("%s\t%d\n", $key, $count{$key}); } exit;