加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 基于本体的字符串分类

发布时间:2020-12-14 06:25:55 所属栏目:百科 来源:网络整理
导读:我最近开始使用本体,我正在使用Protege构建一个本体,我也想用它来自动分类字符串.以下说明了一个非常基本的类层次结构: String|_ AlphabeticString |_ CountryName |_ CityName|_ AlphaNumericString |_ PrefixedNumericString|_ NumericString 最终像西班
我最近开始使用本体,我正在使用Protege构建一个本体,我也想用它来自动分类字符串.以下说明了一个非常基本的类层次结构:
String
|_ AlphabeticString
   |_ CountryName
   |_ CityName
|_ AlphaNumericString
   |_ PrefixedNumericString
|_ NumericString

最终像西班牙这样的字符串应该被归类为CountryName,或者UE4564将被归类为PrefixedNumericString.

但是我不确定如何建模这些知识.我是否必须首先定义一个字符是字母,数字等,然后从现有字符构造一个单词,还是有办法使用正则表达式?到目前为止,我只设法根据像String和hasString值“UE4565”这样的精确短语对字符串进行分类.

或者,为本体中的每个类保护正则表达式然后使用这些正则表达式在Java中对字符串进行分类会更好吗?

这里可能适合的方法,特别是如果本体很大/很复杂或将来可能会改变,并假设某些错误是可接受的,那就是机器学习.

利用这种方法的过程概述可能是:

>定义一个可以从每个字符串中提取的功能集,与您的本体相关(下面的一些示例).
>收集字符串的“训练集”及其真正的匹配类别.
>从每个字符串中提取要素,并在此数据上训练一些机器学习算法.
>使用训练的模型对新字符串进行分类.
>根据需要重新训练或更新模型(例如,添加新类别时).

为了更具体地说明,这里有一些基于您的本体示例的建议.

一些可能适用的布尔特征:字符串是否匹配正则表达式(例如Qtax建议的那些);该字符串是否存在于预先构建的已知城市名称列表中;它是否存在于已知的国家/地区名称列表中;大写字母的存在;字符串长度(不是布尔值)等

因此,例如,如果您总共有8个特征:匹配上面提到的4个正则表达式;这里建议的附加4,然后“西班牙”将表示为(1,1,5)(匹配前2个正则表达式但不是最后两个,是城市名称,但不是国家名称,大写字母和长度是5).

这组功能将代表任何给定的字符串.

为了训练和测试机器学习算法,你可以使用WEKA.我将从基于规则或树的算法开始,例如PART,RIDOR,JRIP或J48.

然后,可以通过Weka从Java内部或作为外部命令行使用经过训练的模型.

显然,我建议的功能几乎与您的Ontology 1:1相匹配,但假设您的分类法更大更复杂,这种方法可能是成本效益最好的方法之一.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读