2013-04-22 104 views
0

所以我无法从Wordnet :: SenseRelate调用函数,因为文本中的某些“单词”不是有效的查询。我尝试过使用try和catch,以便程序不会退出并跳过它,但没有运气。我想检查一个词是有效利用WORDNET :: QueryData但是当我使用像一个无效的话,将退出:Wordnet如何知道字符串是否有效查询字符串

$wn->querySense("#44"); 

我得到:

(querySense) Bad query string: #44 
+1

我猜这是冲突的,因为#和查询可以说像狗#n#1的方式,我最终删除了#个事件... – bb2 2013-04-22 05:24:44

回答

0

所使用正则表达式可以在声明中找到:

my ($word, $pos, $sense) = $string =~ /^([^\#]+)(?:\#([^\#]+)(?:\#(\d+))?)?$/; 

如有疑问是否令牌将被接受,测试它反对这个正则表达式。

评论具体问题时,不能有任何前导或尾随#字符(遇到问题)。如果存在#个字符,则查询字符串中可以有1个或2个但不超过2个。 #字符如果作为分隔符存在以确定什么是词,什么是pos和什么是有意义的。

相关问题