我在研究中使用WNetSS API来计算单词之间的语义相似度。我按照this page中列出的说明进行操作。我运行first example并且它运行正常并且数据库已成功加载,但是当我尝试运行second example时,显示了此错误:
run:
The database WordnetSemanticSimilarity is created.
Feb 13, 2018 11:34:07 PM net.sf.extjwnl.dictionary.Dictionary setInstance
INFO: Installing dictionary net.sf.extjwnl.dictionary.FileBackedDictionary@e73f9ac
Loading WordNet2.1 in progress ...
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1740-noun' for key 'PRIMARY'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1040)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2468)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2629)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2719)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2450)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2371)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2355)
at WordNetSemanticSimilarity.WordNetTreatment.WordNetProcessing.LoadWordNetInDataBase(WordNetProcessing.java:259)
at wnetssexamples.Example0.main(Example0.java:39)
C:\Users\Administrator\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 1 second)
我尝试从第一个示例打开创建的数据库,我发现有四行具有相同的键值,但不确定这是否会改变api的逻辑:
当我进一步尝试查找该表中有多少重复行时,我发现了一个巨大的数字,如下图所示:
请问我不知道如何解决这个问题,因为我自己没有创建数据库,我只是加载它。不确定这是作者的错,还是我做错了。您的快速反应将有很大帮助。
谢谢
答案 0 :(得分:1)
这是因为您运行示例0两次将复制数据集中的记录,应该执行的是运行示例0,然后示例1运行四次,每次更改以下行:
第一次POS pos=POS.ADVERB;
第二次POS pos=POS.ADJECTIVE;
第三次POS pos=POS.NOUN;
第四次POS pos=POS.VERB;
然后运行示例6四次,并在示例1中进行相同的修改。
然后尝试对这些类进行注释,并且永远不要再运行它们,这样就不会覆盖数据库和表。