代词替换
Pronoun subsitution
有人对代词替换有什么建议吗?我想让这对用户来说很容易,使用形式 %keywords% 将被替换为 php str_replace 数组。但是英语很难。
示例:
$input='%his% house is %his%, and you can visit %him% there.';
$from[]='%his%';$from[]='%him%';
if($gender=='male'){
$to[]='his';$to[]='him';
}
else{
to[]='hers';$to[]='her';
}
echo str_replace($from, $to, $input);
输出:
他的房子是他的,你可以去那里拜访他<<= OK!
她的房子是她的,你可以去那里拜访她<<==SUCKS!!
示例 2:
$input='%her% house is %hers%, and you can visit %her% there.';
$from[]='%hers%';$from[]='%her%';
if($gender=='male'){
$to[]='his';$to[]='him';
}
else{
to[]='hers';$to[]='her';
}
echo str_replace($from, $to, $input);
输出:
他的房子是他的,你可以去那里拜访他<<=糟透了!!
她的房子是她的,你可以去那里拜访她<<==OK!!
有时候我讨厌英语。
关于如何管理这个的任何想法?
仅供参考,this answer 产生相同的错误输出。
您的占位符还需要记录代词的变形:主格、属格、所有格等。英语仍然有变形的少数地方之一是代词,'who' 与 'whom'即将离开。
不幸的是,即使在日常演讲中,说英语的人也确实不擅长正确使用规则('I' 和 'me' 一直在切换),并且(至少在美国是这样)并没有真正教授不同案例的正式名称。 ("Genitive?")。因此,想出一种对用户来说很容易的方式将非常具有挑战性。
我建议将 %possessive%
作为占位符,并且可能的替换可能像 $third['male']['possessive'] = 'his'
、$third['female']['possessive'] = 'her'
,以允许 $first['possessive'] = 'my'
。
您必须映射所有可能的变形并使用匹配的占位符:
在这种情况下,即使单独使用第三人称代词,也有一些重叠需要处理(即宾语和从属所有格之间等)。对于覆盖所有 cases/forms:
的示例数组
$pronouns['3rd']['male'] = [
'subj' => 'he',
'obj' => 'him',
'poss' => 'his',
'poss_ind' => 'his',
'refl' => 'himself',
];
$pronouns['3rd']['female'] = [
'subj' => 'she',
'obj' => 'her',
'poss' => 'her',
'poss_ind' => 'hers',
'refl' => 'herself',
];
然后将占位符标记为 %obj%
、%poss%
,或者将完整形式标记为 %object%
等,如果您愿意的话。或者 %3rd:obj%
等,如果您需要处理模板中的所有人。但是考虑到重叠,如果你想得到这个正确的,这里没有办法绕过所有的语法。
祝你好运,让你的用户了解 dependent/independent 物主代词等之间的区别,但除此之外,你还必须想出一个语义分析算法,从中扣除适当的变形上下文。您可以制作一个带有适当图标的点击添加标签界面,这些图标说明 dependent/independent 所有格等。:)
经过进一步审查,我认为我找到了一种更简单的方法,可以满足所有情况,并且用户也很容易理解。
我将使用第三人称复数作为关键字
- 他们 > 他/她
- 他们>他/她
- 他们 > 他/她
- 他们的 > 他/她的
感谢您通过 Jerry 和 Markus AO 帮助我思考这个问题。
有人对代词替换有什么建议吗?我想让这对用户来说很容易,使用形式 %keywords% 将被替换为 php str_replace 数组。但是英语很难。
示例:
$input='%his% house is %his%, and you can visit %him% there.';
$from[]='%his%';$from[]='%him%';
if($gender=='male'){
$to[]='his';$to[]='him';
}
else{
to[]='hers';$to[]='her';
}
echo str_replace($from, $to, $input);
输出:
他的房子是他的,你可以去那里拜访他<<= OK!
她的房子是她的,你可以去那里拜访她<<==SUCKS!!
示例 2:
$input='%her% house is %hers%, and you can visit %her% there.';
$from[]='%hers%';$from[]='%her%';
if($gender=='male'){
$to[]='his';$to[]='him';
}
else{
to[]='hers';$to[]='her';
}
echo str_replace($from, $to, $input);
输出:
他的房子是他的,你可以去那里拜访他<<=糟透了!!
她的房子是她的,你可以去那里拜访她<<==OK!!
有时候我讨厌英语。 关于如何管理这个的任何想法?
仅供参考,this answer 产生相同的错误输出。
您的占位符还需要记录代词的变形:主格、属格、所有格等。英语仍然有变形的少数地方之一是代词,'who' 与 'whom'即将离开。
不幸的是,即使在日常演讲中,说英语的人也确实不擅长正确使用规则('I' 和 'me' 一直在切换),并且(至少在美国是这样)并没有真正教授不同案例的正式名称。 ("Genitive?")。因此,想出一种对用户来说很容易的方式将非常具有挑战性。
我建议将 %possessive%
作为占位符,并且可能的替换可能像 $third['male']['possessive'] = 'his'
、$third['female']['possessive'] = 'her'
,以允许 $first['possessive'] = 'my'
。
您必须映射所有可能的变形并使用匹配的占位符:
$pronouns['3rd']['male'] = [
'subj' => 'he',
'obj' => 'him',
'poss' => 'his',
'poss_ind' => 'his',
'refl' => 'himself',
];
$pronouns['3rd']['female'] = [
'subj' => 'she',
'obj' => 'her',
'poss' => 'her',
'poss_ind' => 'hers',
'refl' => 'herself',
];
然后将占位符标记为 %obj%
、%poss%
,或者将完整形式标记为 %object%
等,如果您愿意的话。或者 %3rd:obj%
等,如果您需要处理模板中的所有人。但是考虑到重叠,如果你想得到这个正确的,这里没有办法绕过所有的语法。
祝你好运,让你的用户了解 dependent/independent 物主代词等之间的区别,但除此之外,你还必须想出一个语义分析算法,从中扣除适当的变形上下文。您可以制作一个带有适当图标的点击添加标签界面,这些图标说明 dependent/independent 所有格等。:)
经过进一步审查,我认为我找到了一种更简单的方法,可以满足所有情况,并且用户也很容易理解。 我将使用第三人称复数作为关键字
- 他们 > 他/她
- 他们>他/她
- 他们 > 他/她
- 他们的 > 他/她的
感谢您通过 Jerry 和 Markus AO 帮助我思考这个问题。