vgip / datanorm
1.2.1
2021-08-09 17:15 UTC
Requires
- php: >=5.6.0
README
从某些开源数据源进行数据归一化
安装
系统要求
您需要 PHP >= 7.4,但推荐使用最新稳定版本的 PHP
Composer
$ composer require Vgip/Datanorm
功能列表
- 从乌克兰文到英文的转写 KMU 2010-01-27 #55
- 从 kga.gov.ua 获取基辅街道获取器
从乌克兰文到英文的转写 KMU 2010-01-27 #55
use Vgip\Datanorm\Transliteration\UkrEng\Cabmin2010; $word = 'Єзгїґіпенєп'; $cabmin2010 = new Cabmin2010(); $wordTransliterated = $cabmin2010->transliterate($word); echo $word.' -> '.$wordTransliterated;
从 kga.gov.ua 获取基辅街道获取器
Vgip\Datanorm\Parcer\Address\Ukr\Kyiv\StreetNameKga
从 CSV 文件获取归一化数据的数组
检查并归一化街道名称数据
- 将可能的撇号符号转换为单个符号(ʼ - 02BC)。
- 检查 id(禁止的符号,重复)。如果出错,请参阅 $this->warning。
- 通过白名单检查街道类型。新类型保存到 $this->warning 和 $this->typeNotFound。
- 通过白名单检查基辅区名称。新的基辅区名称保存到 $this->warning 和 $this->districtNotFound。
- 检查街道名称和归一化后的街道名称。 (如果数据保存到 $this->streetNormalization 数组)
- 生成 $this->nameDouble 数组 - 保存两个或更多重复的街道名称。
- 生成 $this->nameList - 所有唯一的街道名称。
- 生成 $this->typeCounter - 基辅所有街道类型的数量。
方法 getCsvAsArray() 的结果数组
- ['number'] - (int) 文件中的序列号
- ['id'] - (int) 文件中的标识符
- ['name_original'] - (string) 文件中的街道名称
- ['name'] - (string) 归一化后的街道名称
- ['type_name'] - (string) 文件中的街道类型名称
- ['type_key'] - (string) 街道类型键
- ['district_string'] - (string) 文件中的街道区域
- ['district_list'] - (array) 街道区域 ['district_key', 'district_key', ...]
- ['document_name'] - (string) 赋予对象名称的文件
- ['document_date'] - (string) 赋予对象名称的文件的日期
- ['document_number'] - (string) 赋予对象名称的文件的编号
- ['document_title'] - (string) 命名对象的文件的标题
- ['place_description'] - (string) 城市中对象的地点
- ['name_old'] - (string) 对象的旧名称
- ['type_old'] - (string) 对象的旧类别(类型)
示例
use Vgip\Datanorm\Parcer\Address\Ukr\Kyiv\StreetNameKga; use Vgip\Datanorm\Directory\Address\Country\Ukr\Address AS DirUkrAddress; use Vgip\Datanorm\Directory\Address\Country\Ukr\City\Kyiv AS DirKyiv; use Vgip\Datanorm\Directory\Lang\Ukr\Pattern AS PatternUkrAddress; use Vgip\Datanorm\Directory\Address\Country\Ukr\StreetNormalizedList; use Vgip\Datanorm\Directory\Address\Country\Ukr\StreetNormalization; $dirUkrAddress = DirUkrAddress::getInstance(); $dirKyiv = DirKyiv::getInstance(); $patternUkrAddress = PatternUkrAddress::getInstance(); $streetNormalizedListObj = StreetNormalizedList::getInstance(); $streetNormalizedList = $streetNormalizedListObj->getNormalization(); /** Get configuration and whitelist data */ $pathSourceFile = join(DIRECTORY_SEPARATOR, ['file', 'Reestr_vulits_Kyiva_2020_10_25.csv']); $streetTypeList = $dirUkrAddress->getStreetTypeWhitelist(); $districtWhitelist = $dirKyiv->getDistrictWhitelist(); $patternStreetName = $patternUkrAddress->getStreetName(); /** Object initialization */ $streetNameKga = new StreetNameKga(); /** Set parameter */ $streetNameKga->setTypeWhitelist($streetTypeList); $streetNameKga->setDistrictWhitelist($districtWhitelist); $streetNameKga->setStreetNormalization($streetNormalizedList); $streetNameKga->setPatternStreetName($patternStreetName); /** Get a result (array) with normalized data */ $data = $streetNameKga->getCsvAsArray($pathSourceFile); /** Get other data */ $res = []; $res['type_list'] = $streetNameKga->getTypeList(); $res['type_counter'] = $streetNameKga->getTypeCounter(); $res['name_list'] = $streetNameKga->getNameList(); $res['name_double'] = $streetNameKga->getNameDouble(); $res['district_not_whitelist'] = $streetNameKga->getDistrictNotFound(); /** Get warnings if present */ $warning = $streetNameKga->getWarning(); $warningValue = $streetNameKga->getWarningValue(); if (null !== $warning AND count($warning) > 0) { print_r($warning); } print_r($data); print_r($res);
乌克兰语
撇号
结果数据将包含乌克兰撇号符号 "ʼ" Unicode 符号 U+02BC。所有其他类似字符(' - U+0027, ’ - U+2019 等)将被替换为 ʼ (U+02BC)。U+02BC - 此符号用于乌克兰域名(ICANN)。
街道名称归一化
- 姓名和姓氏 - 学术家叶夫雷莫夫,将军阿维金,元帅比留佐夫
- 姓名和姓氏 - 列昂尼德·比科夫
- 家庭关系和姓氏 - 兄弟泽罗夫,鲁丁斯基家庭
版本控制
数据归一化遵循 语义版本控制。