Gender Guesser
当前版本: 0.02.0, 最后更新: 2005年11月12日
Wudi <wudicgi-at-yahoo.de>, MSN Space

名称

Gender Guesser - 性别猜测

概要

include_once 'genderguesser.lib.php';
$name = '王杰';
$GenderGuesser = new GenderGuesser;
$GenderGuesser->loadLexicon('charlex_gender.lex');
$tendency = $GenderGuesser->getTendency($name);
echo "$name: " . (($tendency>=0)?'男':'女') . ", 性别倾向: $tendency";

简介

本 Class 可以根据姓名猜测性别。目前可处理两个字、三个字和四个字的姓名。

一般来说,人们的名字和性别都有关系。例如名字中带有“杰”“志”“宏”等字的一般为男性,带有“琬”“佩”“琳”等字的一般为女性。本 Class 就是根据这个规律来猜测性别的。当然也有一些比较中性的字,例如“文”“安”“清”等,通过这样的字来猜测性别就比较困难了。

注意

数据统一使用 UTF-8 编码。

方法

bool setOptions ( mixed options )

设置选项。options 可以为数组或者字符串。若使用字符串,各选项用空格分隔。

若要设置某选项为关闭,在代表该选项的字符前加减号“-”。可设置的选项如下:

s - name 参数包含姓氏。

bool loadLexicon ( string filename )

加载一个词典。成功返回 TURE,失败返回 FALSE。

string getLexiconName ( )

返回所加载词典的名称。

int getOffset ( string name )

返回根据姓名计算出来的偏移量。

偏移量为正数时表示猜测结果为男性,为负数时表示猜测结果为女性,为零时表示在字典中找不到所查询的字或猜测结果为中性。

float getTendencyByOffset ( int offset )

返回根据偏移量计算出来的性别倾向值,其范围为 [-1, 1]。正数表示男性,负数表示女性,零表示中性。绝对值越大可能性越高。

float getTendency ( string name )

返回根据姓名计算出来的性别倾向值,参看 getTendencyByOffset() 方法。

本方法实际就是 getOffset() 和 getTendencyByOffset() 的组合。

历史

v0.02.0 (11/12/2005)

作者

2005, Wudi <wudicgi-at-yahoo.de>, MSN Space