php - 根据其他表信息从表中检索行

标签 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 />";
}

如有任何帮助,我们将不胜感激。

最佳答案

撇开存在根本性缺陷的方法不谈,您只需将评论拆分为单词,然后将它们连接到您的表格中。例如

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;

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

关于php - 根据其他表信息从表中检索行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8121628/

相关文章:

php - 逗号分隔的字符串作为字段和数据 - 在 php mysql 中更新查询

php - 从 MySQL 数据库中批量获取大数据(就像 PhpStorm 那样)

php - 如何从laravel中的中间表中获取数据?

mysql - 带有特殊字符的全文,用于在 json 中替换。怎么了?

php - 将复选框值保存到 laravel 中的数据库

javascript - 脚本不将信息从下拉列表发布到文本框

php - 来自 SQL 的值数组,显示哪些存在,哪些不存在

android - sqlite 中按月分组

php:如何使用准备好的语句从 sql 获取用户名或电子邮件

mysql - 非常大的 SQL 查询的问题