一部のドキュメントの単語をフィルタリングする方法を混乱させました。書類を一つ一つチェックアウトしなければなりません。たとえば、 tb_tokens から:
======================================================================
| tokens_id | tokens_word | tokens_freq| sentence_id | document_id |
======================================================================
| 1 | A | 1 | 0 | 1 |
| 2 | B | 1 | 0 | 1 |
| 3 | C | 1 | 1 | 1 |
| 4 | D | 1 | 0 | 2 |
| ... | | | | |
======================================================================
「and」、「the」などの一般的な単語のリストに表示されるすべての単語を削除する必要があります。リストはテーブル tb_stopword に記録され、次に、記録されたリストに表示されるほとんどのドキュメントで多数出現する単語を削除しますtb_term テーブル内。
関数 cekStopWord :
function cekStopWord ($word) {
$query = mysql_query("SELECT stoplist_word FROM tb_stopword where stoplist_word = '$word' ");
$row = mysql_fetch_row($query);
if($row > 0) {
return true;
} else {
return false;
}
}
そして、2番目のプロセスの同様の機能(ほとんどのドキュメントで多数出現する単語を削除します)
function cekTerm ($word) {
$query = mysql_query("SELECT term_word FROM tb_term where term_word = '$word' ");
すべてのドキュメントで処理方法を混乱させました。doc_id で呼び出そうとしましたが、うまくいきません。ここに私のコードがあります:
//$doc_id is a variable that save array of document_id
$query = mysql_query('SELECT tokens_word, sentence_id, document_id FROM tb_tokens WHERE document_id IN (' . implode(",", $doc_id) . ')') or die(mysql_error());
while ($row = mysql_fetch_array($query)) {
$word[$row['document_id']][$row['sentence_id']] = $row['tokens_word'];
}
foreach ($word as $doc_id => $words){
$cekStopWord = cekStopWord($words);
$cekTerm = cekTerm($words);
if((preg_match("/^[A-Z, 0-9]/", $words))&& (!$cekStopWord) && (!$cekTerm) ){
$q = mysql_query("INSERT INTO tb_tagging VALUES ('','$words','','$sentence_id','$doc_id') ");
また、配列で preg_match を使用する方法は? どうもありがとうございます :)