ysc / QuestionAnsweringSystem

QuestionAnsweringSystem是一个Java实现的人机问答系统,能够自动分析问题并给出候选答案。
Apache License 2.0
1.96k stars 1.3k forks source link

NullPointerException与数据库乱码 #2

Closed hankcs closed 10 years ago

hankcs commented 10 years ago

运行org/apdplat/qa/BaiduDemo.java后,空指针异常,并且从数据库中看到全部是乱码。以下是控制台输出:

从类路径的 /org/apdplat/qa/files/person_name_questions.txt 中加载Question:谁发现的万有引力定理:牛顿 Question:谁发现的万有引力定理 ExpectAnswer:牛顿 从数据库中查询到Question:?????????? 使用【模式匹配】的方法判断问题类型: ?????????? 问题:?????????? 词和词性序列: 词性序列: 对问题进行分词:?????????? 分词结果为: 句法树: X Exception in thread "main" java.lang.NullPointerException at edu.stanford.nlp.trees.international.pennchinese.ChineseGrammaticalStructure.collapsePrepAndPoss(ChineseGrammaticalStructure.java:94) at edu.stanford.nlp.trees.international.pennchinese.ChineseGrammaticalStructure.collapseDependencies(ChineseGrammaticalStructure.java:73) at edu.stanford.nlp.trees.GrammaticalStructure.typedDependenciesCCprocessed(GrammaticalStructure.java:737) at org.apdplat.qa.questiontypeanalysis.patternbased.MainPartExtracter.getMainPart(MainPartExtracter.java:150)

hankcs commented 10 years ago

请问如何解决这个问题呢?

hankcs commented 10 years ago

我看第一个issue也是这个问题 https://github.com/ysc/QuestionAnsweringSystem/issues/1

hankcs commented 10 years ago

自行解决了,请参考pull request

ysc commented 10 years ago

1、查看MySQL是不是utf8编码 执行如下命令:show variables like "%character%"; show variables like "%collation%"; 如果是utf8编码则显示如下: mysql> show variables like "%character%"; show variables like "%collation%"; +--------------------------+--------------------------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/local/mysql-5.6.20-osx10.8-x86_64/share/charsets/ | +--------------------------+--------------------------------------------------------+ 8 rows in set (0.00 sec)

+----------------------+-----------------+ | Variable_name | Value | +----------------------+-----------------+ | collation_connection | utf8_general_ci | | collation_database | utf8_general_ci | | collation_server | utf8_general_ci | +----------------------+-----------------+ 3 rows in set (0.00 sec)

2、如果不是utf8编码,Mac下的MySQL-5.6.20可通过如下方法修改,其他平台和版本请查询谷歌: 2.1、复制配置文件: sudo cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf 2.2、修改my.cnf: 新增: [mysql] default-character-set=utf8 [client] default-character-set=utf8 在[mysqld]下新增: character-set-server=utf8 2.3、重新启动MySQL服务: sudo /Library/StartupItems/MySQLCOM/MySQLCOM restart

3、改完编码后删除数据库,重新执行脚本src\main\resources\mysql\questionanswer.sql