updated 计算规则模块化
This commit is contained in:
parent
6fc0260e27
commit
adcbd8530b
4
dist/relationship.min.js
vendored
4
dist/relationship.min.js
vendored
File diff suppressed because one or more lines are too long
4
dist/relationship.zh-HK.min.js
vendored
4
dist/relationship.zh-HK.min.js
vendored
File diff suppressed because one or more lines are too long
@ -1,4 +1,4 @@
|
||||
// 默认完整映射关系
|
||||
// 完整关系链数据 - 合并各类关系链数据
|
||||
import _prefix from './data/prefix';
|
||||
import _branch from './data/branch';
|
||||
import _main from './data/main';
|
||||
|
@ -1,8 +1,10 @@
|
||||
// 通用方法
|
||||
import _filter from './filter';
|
||||
import _filter from './rule/filter';
|
||||
import _expression from './rule/expression';
|
||||
import _replace from './rule/replace';
|
||||
import _similar from './rule/similar';
|
||||
import _map from './map';
|
||||
import _pair from './data/pair';
|
||||
import _expression from './expression';
|
||||
|
||||
var _mode = {}; // 模式数据
|
||||
var _data = Object.assign({},_map); // 最终数据
|
||||
@ -130,46 +132,6 @@ export function getSelectors(str){
|
||||
var lists = str.split('的');
|
||||
var result = [];
|
||||
var isMatch = true;
|
||||
// 双向替换
|
||||
var replaceMap = {
|
||||
'晜':'兄',
|
||||
'哥':'兄',
|
||||
'姐':'姊',
|
||||
'侄':'姪',
|
||||
'婿':'壻',
|
||||
'祖父':'王父',
|
||||
'祖母':'王母',
|
||||
'弟媳':'弟妇',
|
||||
'嫂':'兄妇',
|
||||
'孙女婿':'孙婿',
|
||||
'甥女婿':'甥婿',
|
||||
'侄女婿':'侄婿',
|
||||
'孙媳妇':'孙妇',
|
||||
'甥媳妇':'甥妇',
|
||||
'侄媳妇':'侄妇',
|
||||
};
|
||||
// 含义扩展
|
||||
var replaceFilter = {
|
||||
'^从表':['从父姑表','从父舅表','从父姨表','从母姑表','从母舅表','从母叔表'],
|
||||
'^表表':['姑表叔表','姑表姑表','姑表舅表','姑表姨表','舅表叔表','舅表姑表','舅表舅表','舅表姨表'],
|
||||
'^([夫妻内外]?)表':['$1姑表','$1舅表'],
|
||||
'^([姑舅])表(?=[^伯叔])':['$1表伯','$1表叔'],
|
||||
'^姻':['姑姻','姨姻','姊妹姻','女姻'],
|
||||
'^眷':['叔眷','舅眷','兄弟眷','男眷'],
|
||||
'^亲家':['姊妹姻','兄弟眷'],
|
||||
'^([堂表姨]?)([曾高天烈太远鼻]?)(祖?)([伯叔姑舅姨])':['$1$4$2$3'],
|
||||
'^([曾高天烈太远鼻]?)祖?王姑':['姑$1祖母'],
|
||||
'^([曾玄来晜仍云耳])([侄甥])':['$2$1'],
|
||||
'^外表([伯叔姑舅姨])':['姑表$1外','舅表$1外'],
|
||||
'([堂表姨]?)外甥':['$1甥'],
|
||||
'^([舅叔])([曾玄外]*)孙':['$1侄$2孙'],
|
||||
'^([姨姑])([曾玄外]*)孙':['$1甥$2孙'],
|
||||
'([孙甥侄])$':['$1男','$1女'],
|
||||
'([姑舅姨叔])([孙外]*)([男女])$':['$1表侄$2$3','$1表甥$2$3'],
|
||||
'祖$':['祖父'],
|
||||
'嫂$':['兄妇'],
|
||||
'女儿$':['女'],
|
||||
};
|
||||
while(lists.length){
|
||||
var name = lists.shift(); //当前匹配词
|
||||
var items = []; //当前匹配词可能性
|
||||
@ -178,19 +140,20 @@ export function getSelectors(str){
|
||||
var i_items = [];
|
||||
var keywords = [name];
|
||||
var getList = function(name){
|
||||
for(var filter in replaceFilter){
|
||||
var word_list = replaceFilter[filter];
|
||||
word_list.forEach(function(word){
|
||||
var name1 = name.replace(new RegExp(filter),word);
|
||||
// 词义扩展
|
||||
_replace.forEach(item => {
|
||||
item['arr'].forEach(word =>{
|
||||
var name1 = name.replace(item['exp'],word);
|
||||
if(name1!=name){
|
||||
keywords.push(name1);
|
||||
getList(name1);
|
||||
}
|
||||
});
|
||||
}
|
||||
for(var word in replaceMap){
|
||||
var name1 = name.replace(word,replaceMap[word]);
|
||||
var name2 = name.replace(replaceMap[word],word);
|
||||
});
|
||||
// 同义词替换
|
||||
for(var word in _similar){
|
||||
var name1 = name.replace(word,_similar[word]);
|
||||
var name2 = name.replace(_similar[word],word);
|
||||
if(name1!=name){
|
||||
keywords.push(name1);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
// 自然语言表达
|
||||
// 自然语言表达 - 将语句表达转换成参数调用
|
||||
export default [
|
||||
{
|
||||
exp:/^(\S+?)(应该|得)?(称呼|叫|喊)(\S+?)(什么|啥)??$/,
|
@ -1,9 +1,9 @@
|
||||
// 关系链缩写规则 - 将关系链转换成最短关系链
|
||||
/*
|
||||
* 关系数据语法说明:
|
||||
* 【关系符】 f:父; m:母; h:夫; w:妻; s:子; d:女; xb:兄弟; ob:兄; lb:弟; xs:姐妹; os:姐; ls:妹
|
||||
* 【修饰符】 1:男性; 0:女性; &o:年长; &l:年幼; &\d+:排序 #:隔断; [a|b]:并列
|
||||
*/
|
||||
// 关系链缩写规则
|
||||
export default [
|
||||
/* 年龄 */
|
||||
{//有大有小,增加不确定性
|
79
src/module/rule/replace.js
Normal file
79
src/module/rule/replace.js
Normal file
@ -0,0 +1,79 @@
|
||||
// 词义扩展 - 对称呼词义进行扩展
|
||||
export default [
|
||||
{
|
||||
exp:/^从表/,
|
||||
arr:['从父姑表','从父舅表','从父姨表','从母姑表','从母舅表','从母叔表']
|
||||
},
|
||||
{
|
||||
exp:/^表表/,
|
||||
arr:['姑表叔表','姑表姑表','姑表舅表','姑表姨表','舅表叔表','舅表姑表','舅表舅表','舅表姨表']
|
||||
},
|
||||
{
|
||||
exp:/^([夫妻内外]?)表/,
|
||||
arr:['$1姑表','$1舅表']
|
||||
},
|
||||
{
|
||||
exp:/^([姑舅])表(?=[^伯叔])/,
|
||||
arr:['$1表伯','$1表叔']
|
||||
},
|
||||
{
|
||||
exp:/^姻/,
|
||||
arr:['姑姻','姨姻','姊妹姻','女姻']
|
||||
},
|
||||
{
|
||||
exp:/^眷/,
|
||||
arr:['叔眷','舅眷','兄弟眷','男眷']
|
||||
},
|
||||
{
|
||||
exp:/^亲家/,
|
||||
arr:['姊妹姻','兄弟眷']
|
||||
},
|
||||
{
|
||||
exp:/^([堂表姨]?)([曾高天烈太远鼻]?)(祖?)([伯叔姑舅姨])/,
|
||||
arr:['$1$4$2$3']
|
||||
},
|
||||
{
|
||||
exp:/^([曾高天烈太远鼻]?)祖?王姑/,
|
||||
arr:['姑$1祖母']
|
||||
},
|
||||
{
|
||||
exp:/^([曾玄来晜仍云耳])([侄甥])/,
|
||||
arr:['$2$1']
|
||||
},
|
||||
{
|
||||
exp:/^外表([伯叔姑舅姨])/,
|
||||
arr:['姑表$1外','舅表$1外']
|
||||
},
|
||||
{
|
||||
exp:/([堂表姨]?)外甥/,
|
||||
arr:['$1甥']
|
||||
},
|
||||
{
|
||||
exp:/^([舅叔])([曾玄外]*)孙/,
|
||||
arr:['$1侄$2孙']
|
||||
},
|
||||
{
|
||||
exp:/^([姨姑])([曾玄外]*)孙/,
|
||||
arr:['$1甥$2孙']
|
||||
},
|
||||
{
|
||||
exp:/([孙甥侄])$/,
|
||||
arr:['$1男','$1女']
|
||||
},
|
||||
{
|
||||
exp:/([姑舅姨叔])([孙外]*)([男女])$/,
|
||||
arr:['$1表侄$2$3','$1表甥$2$3']
|
||||
},
|
||||
{
|
||||
exp:/祖$/,
|
||||
arr:['祖父']
|
||||
},
|
||||
{
|
||||
exp:/嫂$/,
|
||||
arr:['兄妇']
|
||||
},
|
||||
{
|
||||
exp:/女儿$/,
|
||||
arr:['女']
|
||||
},
|
||||
];
|
18
src/module/rule/similar.js
Normal file
18
src/module/rule/similar.js
Normal file
@ -0,0 +1,18 @@
|
||||
// 同义词替换 - 对称呼中的近义词进行替换
|
||||
export default {
|
||||
'晜':'兄',
|
||||
'哥':'兄',
|
||||
'姐':'姊',
|
||||
'侄':'姪',
|
||||
'婿':'壻',
|
||||
'祖父':'王父',
|
||||
'祖母':'王母',
|
||||
'弟媳':'弟妇',
|
||||
'嫂':'兄妇',
|
||||
'孙女婿':'孙婿',
|
||||
'甥女婿':'甥婿',
|
||||
'侄女婿':'侄婿',
|
||||
'孙媳妇':'孙妇',
|
||||
'甥媳妇':'甥妇',
|
||||
'侄媳妇':'侄妇',
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user