【问题标题】:Wordnet how to know if string is valid query stringWordnet如何知道字符串是否是有效的查询字符串
【发布时间】:2013-04-14 19:21:20
【问题描述】:

所以我无法从 Wordnet::SenseRelate 调用函数,因为文本中的某些“单词”不是有效的查询。我试过用 try 和 catch 包围,这样程序就不会退出并跳过它,但没有运气。我想通过使用 Wordnet::QueryData 检查一个词是否有效,但是当我使用无效词时它会退出:

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

我明白了:

(querySense) Bad query string: #44 

【问题讨论】:

  • 我猜这是因为 # 和查询可以像 dog#n#1 这样的方式发生冲突,我最终删除了 # 个出现...

标签: regex perl wordnet


【解决方案1】:

使用的正则表达式可以在语句中找到:

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

如果不确定令牌是否会被接受,请对照此正则表达式对其进行测试。

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

【讨论】:

    猜你喜欢
    • 2013-02-13
    • 2018-02-02
    • 2011-01-12
    • 1970-01-01
    • 2011-06-15
    • 2011-06-17
    • 2010-12-23
    • 2019-05-05
    • 2019-10-04
    相关资源
    最近更新 更多