treetagger使いたい.......(+ω+)

英語の構文解析がしたかったので

http://www.cis.uni-muenchen.de/~schmid/tools/TreeTagger/

↑treetaggerのサイトのダウンロードから

1のlinuxパッケージ、2の tagging script、3のinstall-tagger.sh、4のparameter fileからEnglish parameter file をダウンロードし、全部を同じフォルダの中に入れてshコマンドでinstall-tagger.shを端末から実行したら展開されます。

 

パスを通すとどこからでもtreetaggerが使えるようになって楽なので、

隠しファイルの.bashrcの最後の行に(desktopでls -aで見つけられた。)

PATH="$PATH:/treetaggerの置いてある場所/treetagger/cmd"

PATH="$PATH:/treetaggerの置いてある場所/treetagger/bin"

を書き入れます。

 

端末にecho "my name is dog."| tree-tagger-english

と入力すると

reading parameters ...
tagging ...
finished.
my      PP$       my
name    NN         name
is           VBZ       be
dog       NN         dog
.             SENT    .
と表示された。

やったね。

あとはpythonから動かせたらいいのですけど、動かない........(+ω+)

 

 

 

tesseract の論文?を読みました。

論文というか、取り扱い説明書???

http://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/33418.pdf

↑ググったらすぐに出てくるこれです。

verview of the Tesseract OCR Engine直訳して、テセラクトの概要......

どういう仕組みでtesseractが文字を読み取っているのか気になった次第です。

一応頑張って読みましたが正しいかどうかは分からないです。。。。。

 

続きを読む

セット4(後半)

セット4(後半)です。

 

(6)1行1単語形式(medline.txt.sent.tok)を読み込み,単語の連接を出力するプログラムを実装

#!usr/bin/env python3
# -*- coding: utf-8 -*-

import marshal
line = ""
for i in open("medline.txt.sent.tok.stem","r"):
    i = i.strip("\n").split("\t")
    if(line != ""):
        if(line != "."):
            print(line+"\t"+i[1])
    line = i[1]

 if(line != "")で1回目はlineが""なのでline=i[i]となります。

if(line != ".")でlineが"."になるまで出力していきます。

line="."となるとまたline=i[1]となりこれをループで繰り返していきます。

 

続きを読む

tesseract を使うときでの手こずったとこ

プログラムとしてはtesseractをダウンロード出来るサイト(https://code.google.com/p/python-tesseract/)に書いてあるとおりに、

 

 

 

api = tesseract.TessBaseAPI()
api
.SetOutputName("outputName");
api
.Init(".","eng",tesseract.OEM_DEFAULT)
api
.SetPageSegMode(tesseract.PSM_AUTO)
mImgFile
= "xxx.jpg"
pixImage
=tesseract.pixRead(mImgFile)
api
.SetImage(pixImage)
outText
=api.GetUTF8Text()

みたいな感じで使えます。
続きを読む

セット4(前半)

セット4(前半)です。

 

(1)ファイルを読み込み,単語をキーとして,品詞,活用形,基本形のタプルのリストを値とするマッピング型に格納せよ.プログラムの動作を確認するため,標準入力から読み込んだ単語の語彙項目を閲覧するプログラムを実装

#!usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import sys

dic = {}


for i in open("inflection.table.txt","r"):
    i=i.split("|")
    key=i[0]
    word=(i[1],i[3],i[6])
    dic.setdefault(key,).append(word)
word = ''
if(word != '0'):
    word = input('単語入力')
    print("入力="+word)
    if(word in dic):
        print(dic[word])
    else:
        print("登録されてません")

Pythonでマッピング型としてはdictというものがあり、それを使った。

setdefaultで指定したkeyが無い場合に、keyを辞書に追加することができ、dic.setdefault(key,).append(word)でどんどん追加していくことができます。

inputで入力を取得できます。

 

続きを読む

セット3

セット3です。

 

(1)標準入力から英語のテキストを読み込み,ピリオドを文の区切りと見なし,1行1文の形式で標準出力に書き出す

f = open("medsamp2012h.txt","r")
data = f.read()

t=re.sub("\.",'.\n',data)
print(t)
f.close()

re.subでピリオドを改行(\n)に変える。

続きを読む