0

基本的に文字列を読み取り、単語を名詞、動詞などに分類するmecabというソフトウェアを見つけました.たとえば、Oxford Street では、多数の結果が表示され、mecab はこれらの結果を個別に取得して仕事をします。

私が立ち往生しているのは、これらの結果を mecab にフィードする方法がわからないことです。

コードは次のとおりです。

<html>
<head></head>
<body>
    <script type="text/javascript" src="http://www.google.com/jsapi?key=AIzaSyBX85AAhYSkh66lk8i2VBSqVJSY_462zGM"></script>

<script type="text/javascript">

  function OnLoad()
  {
      // Create Search Control
      var searchControl = new google.search.SearchControl();

      // Add searcher to Search Control
      searchControl.addSearcher( new google.search.WebSearch() );

      searchControl.draw( document.getElementById( 'content' ) );

      // Execute search
      searchControl.execute( '新宿' );

  }


  // Load Google Search API
  google.load( 'search', '1' );

  google.setOnLoadCallback( OnLoad );

</script>
<div id="content">Loading...</div>

<?php
    define('Mecab_Encoding', 'SJIS');
    define('Mecab_ResultEncoding', 'UTF-8');
    define('MeCab_Path', 'mecab.exe');
    function morph_analysis($text) {
      $text = mb_convert_encoding($text, Mecab_Encoding, Mecab_ResultEncoding);
      $descriptorspec = array (
        0 => array ("pipe",   "r"), // stdin
        1 => array ("pipe", "w") // stdout
      );
      $process = proc_open(MeCab_Path, $descriptorspec, $pipes);
      if (is_resource($process)) {
        // Feed string to macab
        fwrite($pipes[0], $text);
        fclose($pipes[0]);
        // Read the string
        while (!feof($pipes[1])) {
          $result .= fread($pipes[1], 4096);
        }
        fclose($pipes[1]);
        proc_close($process);

        $result = mb_convert_encoding($result, Mecab_ResultEncoding, Mecab_Encoding);
        $lines = explode("\r\n", $result);
        $res = array();
        foreach($lines as $line) {
          if(in_array(trim($line), array('EOS', ''))) {continue;}
          $s = explode("\t", $line);
          $word = $s[0];
          $words = explode(',', $s[1]);

      if ($words[0] == "名詞"){
              $res[] = array(
                'word' => $word,
                'class' => $words[0],
                'detail1' => $words[1],
                'detail2' => $words[2],
                'detail3' => $words[3],
                'conjugation1' => $words[4],
                'conjugation2' => $words[5]
              );
      }
        }
        return $res;
      } else {
        return false;
      }
    }

$text ="今日はいい天気です。";
$result = morph_analysis($text);

echo "<pre>";
print_r($result);
echo "</pre>";

?>

</body>
</html>
4

1 に答える 1

1

したがって、基本的には、PHP に渡したい JavaScript API からのコンテンツを取り込む div があります。これを行う最も簡単な方法は、API がページに入力するのと同じ方法で、javascript から PHP スクリプトへのajax呼び出しを行うことです。ここを除いて、コンテンツを PHP に渡し、必要な別のdivなど、ページのどこにでも配置できる結果を取得します。

<div id="content">Loading...</div>

getElementByIdこのコンテンツには、javascript でドキュメントのプロパティを使用してアクセスできます。

<script>
$.ajax({
  type: "POST",
  data: {"text": document.getElementById('content').innerHTML },
  url: "http://www.example.com/your-php-script.php", // put the URL to your PHP script here
}).done(function ( data ) {
  document.getElementById('myOutPutDiv').innerHTML = data;
});
</script>

次に、HTMLには出力用の適切なdivがあります

<div id="myOutPutDiv">Output goes here...</div>

次に、PHP スクリプトで、$_POST/$_REQUEST スーパーグローバルでデータを受け取ります...

<?php
    $text = $_POST['text']; // This is the stuff you got from your javascript

    /* Work with $text here */

PHP と JavaScript は独立して動作するため、必ずそれらを分離してください。

于 2012-12-14T06:36:21.340 に答える