たつをの ChangeLog

83 件 見つかりました。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [ 次へ ]

Yahoo!デベロッパーネットワークのテキスト解析 API の日本語形態素解析 (V2) を Linux や macOS などのターミナルから使うためのコマンドを用意しました。
Perl で書いた超簡単なやつです。


実行例
echo '走れ' | ./yapima2.pl

{"id":1,"jsonrpc":"2.0","result":{"tokens":[["走れ","はしれ","走る","動詞","*","子音動詞ラ行","命令形"]]}}


実行例(jq で加工)
echo '読み仮名だけ抜き出します' | ./yapima2.pl \
  | jq -cr '[ .result.tokens[] | .[1] ] | join("")'

よみがなだけぬきだします
echo '行番号と品詞です\n晩御飯が美味しい' | ./yapima2.pl \
  | jq -cr '[ .id, [ .result.tokens[] | .[3] ] ] | flatten | @csv'

1,"名詞","名詞","助詞","名詞","判定詞"
2,"名詞","名詞","助詞","形容詞"
echo '文章から名詞だけ抽出して要約っぽく見せかけます' | ./yapima2.pl \
  | jq -cr '[ .result.tokens[] | select(.[3] | contains("名詞")) | .[0] ] | join("")'

文章名詞抽出要約

参考

この記事に言及しているこのブログ内の記事

形態素解析器 MeCab の WebAPI である MECAPI
その MECAPI を Linux や macOS などのターミナルから使うためのコマンドを用意しました。
Perl で書いた超簡単なやつです。


使い方は API に準拠 (ref. http://maapi.net/apis/mecapi)。
response, filter, format, dic はオプションで指定。
sentense (解析対象文) は標準入力で。

実行例:
% echo 'ここは六本木ヒルズです' | mecapi.pl -format json -dic neologd | jq .
[
  {
    "feature": "名詞,代名詞,一般,*,*,*,ここ,ココ,ココ",
    "surface": "ここ"
  },
  {
    "feature": "助詞,係助詞,*,*,*,*,は,ハ,ワ",
    "surface": "は"
  },
  {
    "feature": "名詞,固有名詞,一般,*,*,*,六本木ヒルズ,ロッポンギヒルズ,ロッポンギヒルズ",
    "surface": "六本木ヒルズ"
  },
  {
    "feature": "助動詞,*,*,*,特殊・デス,基本形,です,デス,デス",
    "surface": "です"
  }
]
(JSON を扱うには jq がすごく便利!)

エラーが出る場合、中で使っている Perl モジュール "LWP::Simple" で https へのアクセスができないことが原因かも。
そのときは、 "LWP::Protocol::https" を入れて見てください。
"perl lwp::simple https" などでネット検索!

それができない、とか、それでもダメといった場合は代わりに mecapi-curl.pl をご利用ください。
こちらは最小構成の perl と curl が入っていれば動きます。
単なる curl のラッパーです。

以上です。
ぜひ、MECAPI をお楽しみください!

追記191212: 一文ずつ渡すだけならば普通に curl だけOKです!
curl https://maapi.net/apis/mecapi -s --data format=json --data-urlencode sentence=六本木ヒルズです

関連記事


MECAPI という形態素解析 API を運営しているのですが、ここしばらくはレンタルサーバの負荷がきついので実質まったく動いていない状態でした(というか停止していた)。

「これじゃいけない!」ということで、AWS 上で MECAPI を運用していくことにしました。
クラウドな MECAPI です。

URLも新しくなりました。
説明ページ(トップページ)も作りました。
どうぞご利用ください。

mecapi 仮ロゴ
  • 形態素解析API「MECAPI
    MECAPIとは、 日本語形態素解析器 MeCab の Web Service (API) です。
    API を無償で提供しております。
    後述の注意点をお読みいただいた上で、ご自由にお使いください。

1週間くらい前から真面目にAWSをいじり始めたのですが、かなり良いですね(今更)。
練習でウェブサーバを立ち上げたりしてましたが、手順は多いけど難しくはないです。
なんだかんだで最後までできてしまいます。
やはり時代はクラウドだなあ。

MECAPI での形態素解析処理(MeCab とその Perl Module)は当面はインスタンス1つだけでまかなうつもり。
ロードバランサーの設定もしたので、負荷がきつくなったらインスタンスを追加すれば大丈夫なはず(今はLBにインスタンスが一つだけぶらさがっている状態)。
そこらへんは追々に。

AWS の料金ですが、私が運営しているKindleセール情報サイト「キンセリ」の収入の一部を使っていくつもりです。
まずは、月10万円くらい($1,000)が上限(アラート設定済み)。
どれくらいかかるかはやってみなくちゃわからないけど。
運用状況については今後定期的に報告していく所存です。

過去記事

この記事に言及しているこのブログ内の記事

自分用メモ。
コマンドラインで XML を軽くいじる用途。
不完全な気がするけど、とりあえず当面の用途(Amazon API の XML)で使えているので放置。

*コード(xml2tsv.pl)
#!/usr/bin/env perl
use strict;
use warnings;
use XML::Simple;
use utf8;
use open ":utf8";
binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";

my $xml_str = join('', <>);

my $xs = new XML::Simple();

my $ref = $xs->XMLin($xml_str);

my @list = (["xml", $ref]);
while (my $rs = shift @list) {
    my ($label, $ri) = @$rs;
    my $rf = ref($ri);
    if ($rf eq "HASH") {
	foreach my $k (sort keys %{$ri}) {
	    push @list, ["$label/$k", $ri->{$k}];
	}
    } elsif ($rf eq "ARRAY") {
	for (my $i = 0; $i < @$ri; $i++) {
	    push @list, ["$label/\@".$i, $ri->[$i]];
	}
    } else {
	print qq($label\t$ri\n);
    }
}

*実行例
% head B00EOEZJ90.xml
<?xml version="1.0" ?><ItemLookupResponse ...
</HTTPHeaders>
<RequestId>...</RequestId>
<Arguments><Argument Name="AWSAccessKeyId" Value="..."></Argument>
<Argument Name="AssociateTag" Value="137439-22"></Argument>
<Argument Name="ItemId" Value="B00EOEZJ90"></Argument>
<Argument Name="Operation" Value="ItemLookup"></Argument>
<Argument Name="ResponseGroup" Value="Large,VariationMatrix"></Argument>
<Argument Name="Service" Value="AWSECommerceService"></Argument>
<Argument Name="Timestamp" Value="2018-08-23T08:01:24Z"></Argument>

% xml2tsv.pl B00EOEZJ90.xml | head
xml/xmlns	http://webservices.amazon.com/AWSECommerceService/2011-08-01
xml/OperationRequest/RequestId	...
xml/OperationRequest/RequestProcessingTime	0.1334097060000000
xml/Items/Item/ASIN	B00EOEZJ90
xml/Items/Item/DetailPageURL	...
xml/Items/Item/ParentASIN	B00LWHUW58
xml/Items/Item/SalesRank	109
xml/Items/Request/IsValid	True
xml/Items/Item/CustomerReviews/HasReviews	true
xml/Items/Item/CustomerReviews/IFrameURL	...

サブマシンのサブマシン、つまりは3軍マシンとなっている「Macbook Air 11-inch (Mid 2011)[2014-09-22-1]」の OS をアップデート。

MacBook Air 11-inch 2011

  • 今まで:OS X El Capitan 10.11.6
  • ニュー:macOS High Sierra 10.13.2

iCloud Drive でいろいろ共有できるようになってありがたい。これで、メインマシン、サブマシンと同じ環境になったので、いざというときに使いやすくなりました。
  • メモリが 2GB しかないので新OSでの動作を心配していたのですが、今までとたいして変わらず。もちろん、Chrome でタブを何枚も開くととかなりきついです。
  • ストレージは 64GB しかないですが、まあ容量は別に平気。いろいろとデータためるものじゃないし、Dropbox あるし、iCloud Drive あるし。OSアップデートで余計なものが消えたみたいで、空き容量が倍になってました。
  • バッテリーはかなりへたってるので、給電しながらの利用が前提。そこがちょっと活躍の幅を狭めてるなあ。

ちなみに主な使い方は、
  • emacs でのテキスト作成、
  • Perl などでの簡単なデータ集計・変換、
  • Chrome でのウェブ閲覧、
です。
動画編集や画像加工などの処理はやりません、ってスペック的に無理でしょう。

結局、
  • (1) ローカルでUNIX的な環境がストレスなく使えて、
  • (2) iPhoneや他のMacBookとデータなどシームレスで、
  • (3) それでいて軽い、
というノートPCとなるとこれしかないんだよね。
iPad Pro は1番目のポイントがねえ、ってまあ用途が違うけど。
そうそうあと、
  • (4) 奥行きが短いので狭いテーブルや物が多いテーブルでも作業できる、
ってのも嬉しいですよね、11-inch は。

11インチで新しい MacBook が出れば欲しいんだけど出なさそうだし、中古にするかな。2015年が最後に出た年だけど、2014 でも 2013 でもメモリがあればいいか。

2011MC968J/A MC969J/A
2012MD223J/A MD224J/A
2013MD711J/A MD712J/A
2014MD711J/B MD712J/B
2015MJVM2J/A MJVP2J/A

関連記事

この記事に言及しているこのブログ内の記事

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [ 次へ ]

たつをの ChangeLog
Powered by chalow