PHPで文章中から頻出ワードを抽出する方法

このQ&Aのポイント
  • PHPで頻出ワードを抽出するプログラムを作成する方法について教えてください。
  • 文章中から助詞や記号、主語を除いて頻出ワードを取得するPHPプログラムの作り方を教えてください。
  • PHPを使用して、文章から頻出ワードを抽出するための効果的な方法について教えてください。
回答を見る
  • ベストアンサー

PHPで文章中から頻出ワードを抽出するプログラム

PHPで頻出ワードを抽出するプログラムを書きたいです。 たとえば $a = "今日私はりんごを食べました。私の一番の大好物はりんごです!!特に蜜入りのりんごが大好きです。今日食べたりんごは蜜入りでした!!"; みたいな文章から $v =([、。!!??()()「」『』|する|でなければ|について|ならば|までを|までの|くらい|なのか|として|とは|なら|から|まで|して|だけ|より|ほど|など|って|では|は|で|を|の|が|に|へ|と|て|私]) のような助詞や記号や主語を除いて ”りんご”→3 ”蜜入り”→2 ”今日”→2 のように、頻出ワードとそのワードが使用されている回数を表示させるようなプログラムってどうすればいいんでしょう? よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • ts3m-ickw
  • ベストアンサー率43% (1248/2897)
回答No.1

kyteaのような形態素解析ツールをつかって文章を形態素に分割し、 あとはそれぞれの形態素(名詞)の数を数えればいいでしょう。 PHPだけでやるのは不可能とは言わないまでも困難です。

参考URL:
http://www.phontron.com/kytea/index-ja.html

関連するQ&A

  • Excelで文字列から頻出Top5を抽出するには?

    A1セルからA500セルまでの列に現れた頻出ワード(文字列)のTop5をB1セルからB5セルへ抽出するには、どのような記載をすれば良いでしょうか?頻出ワードの回数はわからず、B1セルからB5セルまで、頻出ワード順に記載する方法を教えてください。よろしくお願い申し上げます。Excelは2019となります。

  • phpのsubstr_countについて

    <?php $str = "検索対象の文字列をここに指定します。文字列です。文字列。"; $word = "文字列"; var_dump( substr_count( $str, $word ) ); ?> とするとint(3)と帰ってくると思いますが、もし出現回数が5回以上であれば$wordを表示するというプログラムを書きたいのですが、php初心者なのでよくわかりません どなたかアドバイスお願いします。

    • 締切済み
    • PHP
  • 例えばPHPで下記のようなdata.csvがあります

    例えばPHPで下記のようなdata.csvがあります NO,種類,入荷日,出荷日 1,りんご,2010/06/10,2010/06/30 2,みかん,2010/03/10,2010/04/30 3,かき,2010/05/10,2010/05/30 ・ ・ ・ これらをPHPで読み込んできて入荷日順に10件ずつ表示するプログラムを書きたいのですが 本も三冊買ってきたり、掲示板のソースとかをみて参考にできるかと思ったりしたのですが当方初心者でしてどうも難しく行き詰っております。 data.csvから1行ずつ取り込んできて、3番目の数字でソートするといいというのは分かるのですが どうもその方法がわかりません。 何かアドバイス頂ければ幸いです。

    • ベストアンサー
    • PHP
  • WORDのアイコン

    WORDのアイコンが、「スタートメニュー」の中で、「ライセンス認証」と表示されています。記号も、以前は青色の「W」の文字で表示されていたのに、ウインドウズの画面のようなアイコンになっています。このアイコンをクリックすると、「このアプリケーションは、既にライセンス認証手続きが完了しています」と表示されるだけです。今日ワードを使った時は、「スタートメニュー」→「すべてのプログラム」→「officeのドキュメントの新規作成」という手順で立ち上げました。しかし、「すべてのプログラム」の中にエクセルやoutlookはあるのに、ワードだけ「officeのドキュメントの新規作成」から立ち上げないといけないのはおかしな気がします。このような事が起こったのは、WORDを2003年版にグレードアップした時からだと思います。なんとか、以前のように、ワードのアイコンが表示され、そこからワードが使えるようにしたいです。お願いします。

  • サーバー移転後、プログラムが正常に動かなくなったのですが...?

    先日サーバーを移転したのですが、検索プログラム(PHP)が正常に動作しなくなってしまいました。 症状といたしましては、検索ボックスにワードを入力して検索すると、 文字化けしてしまって、検索されないのです。 移転作業はFTPでダウンした以前のサイトのファイルをそのままアップしました。 データはMySQLに入ってましたので、phpMyAdminでエクスポート&インポートしました。 文字コードもあってるんですけど...? 解決のために今日一日中ググっていたのですが、 力尽きてしまいました。 どなたかご教授願えないでしょうか? 宜しくお願いいたします。

    • 締切済み
    • PHP
  • php5のコンストラクタをphp4仕様に変えたいです。

    今日からつかえるPHP5サンプル集を使ってphpの練習をしています。 この中にDBを使った掲示板のサンプルがあり、DBの出入力をクラスファイルで行っています。 そのphp5の__constract()を使っている部分を、php4に対応した形にしようとして躓いています。 以下、コードです。一部編集しています。 【Article.class.php】 class Article { //*この部分を追加 function Article() { $this->__construct(); }// function __construct(){ /* コンストラクタ */ } var $_id; …中略 function getId(){return $this->_id;} …中略 function setId($id){$this->_id=$id;} …中略 function getArticleInfo($cnt,$num){ $aryArt=array(); $db=DB::connect("mysql~"); $rs=$db->query("SELECT * FROM bbs_master WHERE parent=0 ORDER BY sdat DESC LIMIT ".$cnt.",".$num); while($row=$rs->fetchRow(DB_FETCHMODE_ASSOC)){ $objArt=new Article(); $objArt->setId($row['id']); …中略 //*これ以下を実行するとieで"ページを表示できません。"が出る $aryTmp=Article::getChildArticleInfo($objArt->getId()); $objArt->setChild($aryTmp); $aryArt[]=$objArt; } return $aryArt; } function getChildArticleInfo($id){ …各記事の子記事を抽出するプログラム } return $aryArt; } } PEARの読み込みやDB接続は成功しているのは確認済みです。 上記コード中の再帰的にArticle::getChildArticleInfo($objArt->getId());を呼び出しているところで実行できなくなるようです。 これをphp4でも動作するように変更できないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • EXCELのDATAを抽出して日別の表を作る式は

    最近は自分で表などを作る機会が少ない高齢者ですが、 目的は、Office2013 EXCELで AH2セルに、1日,鹿児島,山口,広島 AH3セルに2日熊本,大分,長崎   という文字列をそれぞれ一つのセル(AH2セルからAH32)に書き出したいのです、 EXCELの表の1行目にB列からAF列まで1から31までの一ヶ月の日付を書き入れ、 A列の2行(A2セル)から21行(A21セル)に氏名を書き入れている表の、 DATAとして、 B2セルからAF21セルの、不特定のセルの★や☆の記号を、 一番目に、 B2~B21のなか(仮にB3セル)に ★☆の記号が有ったら、  その行の該当氏名(鹿児島(A3セル))をWORD文字列に、書き出し、 二番目に、 B2~B21のなか(仮にB5セル)に ★☆の記号が有ると、 その行の該当氏名(山口(A5セル))をWORD文字列に、書き出すことを、 一ヶ月すべての日付(B1セルからAF1セルに該当)の★☆がある列 (B2セルからAF21セルのすべて)から抽出して、 AH2セルからAH32セルに書きだす  式 / 関数のご指導お願いいたします。

  • PHPでチェックボックスの内容を保存する方法

    PHPでチェックボックスの内容を保存する方法 2点の質問があります。 経験者に相談ですが、 1番目の質問 フォームによるチェックボックスの内容をカンマ区切りのデータとして内容を取得保存する場合に皆様はどのようにしてるか教えてください。 例 みかん チェックあり りんご チェックなし ばなな チェックあり (1)データ1,データ2,データ3,みかん,  ,ばなな (チェックがない項目は空にする) (↑この場合はチェック項目を跡で追加する場合は結構面倒) (2)データ1,データ2,データ3,みかん: :ばなな (カンマ間で適当な区切り記号) (↑この場合はログを戻す時に:でスプリットさせて処理する) 2番目の質問 ログに書き込んだデータを再度カンマ区切りでスプリットさせてフォームのチェックボックスとして元に戻して表示する方法がわかりません。サイト検索しましたがサンプルになりそうなものが見つからず、もし参考になりそうなサイトやヒントになるようなサンプルを教えて下さい。 お願いします。

    • ベストアンサー
    • PHP
  • エクセル フィルタオプションについて

    教えて下さい。 sheet1~sheet3まであります。 【sheet1】と【sheet2】をフィルタオプション で検索条件範囲が【記号】部分で、 【sheet3】の結果になりますが、 VBAで、どのようにすれば良いのか わかりません。 Sheets("Sheet1").Range("A1:C3").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("A1:A2"), CopyToRange:=Range("A3:C150"), Unique:=False Sheets("Sheet2").Range("A1:C6").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("A1:A2"), CopyToRange:=Range("A3:C150"), Unique:=False End Sub このプログラムで実行するとSheet2の抽出しか できません。 何が足りないのでしょうか? 宜しくお願いします。 【sheet1】 A B C 品名 金額 記号 1 いちご 100 06-02 2 りんご 200 06-01 3 みかん 300 06-02 【sheet2】 A B C 品名 金額 記号 1 いちご 500 06-01 2 りんご 1000 06-01 3 みかん 1500 06-02 【sheet3】 A B C 1 記号 2 06-02 3 品名 金額 記号 4 いちご 100 06-02 5 みかん 300 06-02 6 みかん 1500 06-02

  • PHP の2つの関数について

    お世話になります。 ディレクトリー内の要素が、さらにディレクトリーなのかあるいはファイルなのかを検証する簡単なルーティンを作っていますが、この中で使っている2つの関数の働きが、自分が理解していたようにならないので質問させていただきます。 (1) str_replace() について ファイルエクスプローラーからpath としてコピーしてきたディレクトリーのパスは次のようになっています。 "C:\xampp\htdocs\PHP-practice\testDir" この中にあるバックスラッシュ "\" 記号を、str_replace() を使って "/" に変えようとしましたが、次のようになってしまいました。 $direct ="C:\xampp\htdocs\PHP-practice\testDir"; $direct = str_replace("\\", "/", $direct); echo "========== ".$direct."<BR>"; 結果は: ========== C: mpp/htdocs/PHP-practice estDir つまり中ほどにあるものは変換されましたが、最初と最後は変換されず、しかも元のパスの一部が消えています。これはどうしたことなのでしょうか?これが最初の質問です。 しかし実際にはここで止まっている訳にいかないので、手作業で修正して先に進めました。 (2)readdir() について ディレクトリーの中をreaddir()で読んで、それがディレクトリーかファイルかを区別する簡単なコードですが、上手く行きません。 出力結果は次のように、ディレクトリーをファイルであると表示してきます。 ========== C:/xampp/htdocs/PHP-practice/testDir insideDir-1 is a file insideDir-2 is a file video1.mp4 is a file readdir() か is_dir()のいずれかの使い方がおかしいのでしょうか? これが2番目の質問です。 実際には testDir フォルダーの中身は以下の通りです。 testDir >> insideDir-1 >> new1.php >>insideDir-2 >> songPath.txt >> video1.mp4 以下に全体のコードを書きます。 <?php function read_directory($direct){ $direct = str_replace("\\", "/", $direct); echo "========== ".$direct."<BR>"; $handle = opendir($direct); $entry = readdir($handle); $entry = readdir($handle);// skip . & .. while($entry = readdir($handle)){ if( is_dir($entry) ) { echo $entry." is a directory<BR>"; }else{ echo $entry." is a file<BR>"; } }// while closedir($handle); return; }// function // ================ main program ================ $dirname="C:/xampp/htdocs/PHP-practice/testDir"; //手作業修正済み read_directory($dirname); ?> どなたかよいアドバイスを頂ける方がいらっしゃいましたら、よろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう