从表中检索行,具体取决于其他表信息

时间:2011-11-14 12:32:10

标签: php mysql

作为一个项目,我必须分析电影评论,以确定它们是积极的还是消极的。

在MySQL中,我有一个用于正面词的表,另一个用于负面词,另一个用于存储一些电影评论。

我只想知道如何使用PHP创建基本内容,这样我就可以查看其中一个电影评论,然后使用正面和负面的单词,看看它们是否出现在评论中,以确定是否审查是积极的或消极的。

这是我到目前为止所做的全部内容,它打印出一条评论:

<?php
// Connects to your Database 
mysql_connect("localhost", "root", ""); 
mysql_select_db("film_reviews"); 

$result = mysql_query("SELECT * FROM review WHERE id = '1'"); 

while($row = mysql_fetch_array($result))
{
  echo $row['filmreview'];
  echo "<br />";
}

任何帮助都将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:1)

除了基本上存在缺陷的方法之外,您只需要将评论分成单词然后将它们加入到您的表中。 e.g。

CREATE TABLE review_words (
  film_id INTEGER NOT NULL,
  review_id INTEGER NOT NULL,
  rword VARCHAR(30),
  occurrences INTEGER NOT NULL
  PRIMARY KEY (rword, review_id) /* order is important */
  /* you probably want some more indexes too */
);

然后用id $ revid审核否定词:

SELECT SUM(occurrences)
FROM review_words rw, negative_words nw
WHERE rw.rword=nw.nword
AND rw.review_id=$revid;

对于积极的话语也一样。

稍微好一点的方法是在同一个表格(比如review_dict)中使用加权因子保留正面和负面的字词:

SELECT SUM(rd.weight * rw.occurrences)
FROM review_words rw, review_dict rd
WHERE rw.rword=rd.dword
AND rw.review_id=$revid;

请注意,您可能希望首先对单词进行规范化 - 至少剥离空格并使用一致的大小写,如果不处理名词中的复数和动词的中性时态。

答案 1 :(得分:0)

尝试调试:

while($row = mysql_fetch_array($result))

{
 echo '<pre>';
print_r($row);
echo '</pre>';

echo "<br />";
}