[date:20121209]の検索結果


自然言語処理(しぜんげんごしょり、natural language processing、NLP)は、人間が日常的に使っている自然言語をコンピュータに処理させる一連の技術であり、人工知能と言語学の一分野。「計算言語学」(computational linguistics)も同じ意味だが、自然言語処理が工学的な視点からの言語処理をさすのに対して、計算言語学は言語学的視点を重視する手法をさす事が多い。データベース内の情報を自然言語に変換したり、自然言語の文章をより形式的な(コンピュータが理解しやすい)表現に変換するといった処理が含まれる。

自然言語処理の基礎技術にはさまざまなものがあるが、現在のところ、日本語を処理する基礎技術としては、形態素解析、構文解析、語義の曖昧性解消照応解析が主に研究されている。

自然言語処理 - Wikipedia
言語処理学会 The Association for Natural Language Processing
自然言語処理ツール
Python による日本語自然言語処理
Perl で自然言語処理

入門 自然言語処理
オライリージャパン 著者:Steven Bird,Ewan Klein,Edward Loper


amazon.co.jpのカスタマーレビューを見る
powered by amalink

[2240] Posted by kagahiro at 2012/12/09 22:59:04
0 point | Link (1) | Trackback (0) | Comment (0)

Perlの関数を使用して、以下の手順で10進数を2進文字列に変換することができます。

  1. sprintf関数で10進数を16進文字列に変換
  2. pack関数で16進文字列をバイナリーにパック
  3. unpack関数で2進文字列に変換

例えば、文字列の先頭文字のASCIIコード値(10進数)を取得し、それを2進文字列に変換に変換する場合は、 次のようなコードになります。

#!/usr/bin/perl

use strict;
use warnings;

my $ascii = "ABC";
my $asciicode = ord $ascii;  # 先頭文字のASCIIコード値を取得
my $str = _bitstr($asciicode, 8);
print "str   = $str\n"; # for debug

exit;

# 10進数を2進文字列に変換する関数
sub _bitstr {
    my ($code, $len) = @_;
    my $hexcode = sprintf("%X", $code); # 16進に変換
    my $bitstr = unpack("B".$len, pack("H2", $hexcode));
}

10進数を単に2進文字列に変換するだけならこれでも構わないのですが、ビット演算子を使ってビットのオン・オフを判定して、 2進文字列を作成していく方法もあります。以下のコードはその実装例です。

#!/usr/bin/perl

use strict;
use warnings;

my $ascii = "ABC";
my $asciicode = ord $ascii;  # 先頭文字のASCIIコード値を取得
my $str = _bitstrR($asciicode, 8);
print "str   = $str\n"; # for debug

exit;

# ビット演算で10進数を2進文字列に変換する関数
sub _bitstrR {
    my ($code, $len) = @_;
    my $bitstr = '';
    for my $i (1 .. $len) {
        $bitstr .= (0x80 & $code) ? '1' : '0'; # 0x80(2進数:10000000)でビット論理積をとる
        $code <<= 1;
    }
    return $bitstr;
}

ここで問題になるのはどちらの方法が処理速度が優れているかということですが、以下のコードのプロファイルを取ると・・・

#!/usr/bin/perl

use strict;
use warnings;

my $ascii = "ABC";
my $asciicode = ord $ascii;  # 先頭文字のASCIIコード値を取得

my $str = '';
for my $j (1 .. 10000) {
    $str = _bitstr($asciicode, 8);
    $str = _bitstrR($asciicode, 8);
}
print "str   = $str\n"; # for debug

exit;

sub _bitstr {
    my ($code, $len) = @_;
    my $hexcode = sprintf("%X", $code); # 16進に変換
    my $bitstr = unpack("B".$len, pack("H2", $hexcode));
}

sub _bitstrR {
    my ($code, $len) = @_;
    my $bitstr = '';
    for my $i (1 .. $len) {
        $bitstr .= (0x80 & $code) ? '1' : '0'; # 0x80(2進数:10000000)でビット論理積をとる
        $code <<= 1;
    }
    return $bitstr;
}


C:\xampp\htdocs\sample>perl -d:Dprof bitstr3.pl
str   = 01000001

C:\xampp\htdocs\sample>dprofpp
Total Elapsed Time = 0.018988 Seconds
  User+System Time = 0.016988 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c  Name
 223.   0.038  0.038  10000   0.0000 0.0000  main::_bitstr
 47.0   0.008  0.008  10000   0.0000 0.0000  main::_bitstrR
 0.00       - -0.000      1        -      -  strict::import
 0.00       - -0.000      1        -      -  warnings::import
 0.00       - -0.000      1        -      -  strict::bits
 0.00       - -0.000      2        -      -  main::BEGIN

やはり、ビット演算で2進文字列を作成するほうが早いようです。

プログラミングPerl〈VOLUME1〉
オライリー・ジャパン 著者:ラリー ウォール,ジョン オーワント,トム クリスチャンセン


amazon.co.jpのカスタマーレビューを見る
powered by amalink

[2239] Posted by kagahiro at 2012/12/09 20:36:29
0 point | Link (4) | Trackback (0) | Comment (0)

機械学習(きかいがくしゅう)とは、人工知能における研究課題の一 つで、人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術や手法のこと。1959年にアーサー・サミュエルは機械学習を「明示的にプログラムしなくても学習する能力をコンピュータに与える研究分野」と定義している。

機械知覚、コンピュータビジョン、自然言語処理、統語的パターン認識、検索エンジン、人工知能診断、バイオインフォマティクスなどの応用分野がある。

機械学習 - Wikipedia
機械学習 はじめよう:連載|gihyo.jp … 技術評論社
機械学習 (Machine Learning) の紹介
パターン認識と機械学習入門
米スタンフォード大学が「機械学習」「データベース」「人工知能」の無料オンライン授業を今秋から開始

言語処理のための機械学習入門 (自然言語処理シリーズ)
コロナ社 著者:高村 大也


amazon.co.jpのカスタマーレビューを見る
powered by amalink


[2238] Posted by kagahiro at 2012/12/09 00:14:58
0 point | Link (10) | Trackback (0) | Comment (0)

  1  


アクセスランキング

今日のアクセスランキング TOP 10

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (168 PV)
  2. Google News (グーグルニュース)日本版 (38 PV)
  3. 最新のGoogle News(グーグルニュース)日本版のRSSが取得できるURL (29 PV)
  4. Tumblr(タンブラー)のダッシュボードからおすすめ投稿を消す(非表示にする)方法 (12 PV)
  5. 有力将棋系ユーチューバーのショウヤンさんが将棋ウォーズで「ソフト指し」を告白し衝撃走る (11 PV)
  6. ウェブページを1回だけリロード(再表示)する方法 (9 PV)
  7. [Perl]UTF-8でエンコードされた文字列の文字数を取得するコード (7 PV)
  8. [将棋]角換わり▲4五桂速攻(△6五桂速攻) #佐藤天彦名人 #三浦弘行九段 (7 PV)
  9. グーグルニュース(Google News)日本版が表示できるURL (6 PV)
  10. SQLのSELECT文でn件目からm件目までのレコードを取得する方法(Oracle、SQL Server、MySQL、PostgreSQL) (5 PV)

今月のアクセスランキング TOP 10

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (2276 PV)
  2. Google News (グーグルニュース)日本版 (695 PV)
  3. Tumblr(タンブラー)のダッシュボードからおすすめ投稿を消す(非表示にする)方法 (373 PV)
  4. 有力将棋系ユーチューバーのショウヤンさんが将棋ウォーズで「ソフト指し」を告白し衝撃走る (369 PV)
  5. 最新のGoogle News(グーグルニュース)日本版のRSSが取得できるURL (367 PV)
  6. [将棋]角換わり▲4五桂速攻(△6五桂速攻) #佐藤天彦名人 #三浦弘行九段 (205 PV)
  7. グーグルニュース(Google News)日本版が表示できるURL (151 PV)
  8. ウェブページを1回だけリロード(再表示)する方法 (149 PV)
  9. [Perl]UTF-8でエンコードされた文字列の文字数を取得するコード (139 PV)
  10. USTREAM(ユーストリーム) 日本語版 無料のライブ映像配信サービス (137 PV)

アクセス統計

ディレクトリ

関連サイト