开源项目学习进程

怎样让使用者定制专闻明词数据

初期的代码如下:

/**
 * 专有名词使用正确的大小写
 * Correct English proper nouns.
 *
 * @param $text
 *
 * @return null|string|string[]
 */
public function properNoun($text)
{
    $dict = include __DIR__ . '/../data/dict.php';
    foreach ($dict as $noun) {
        $text = preg_replace("/\b{$noun}\b/i", $noun, $text);
    }
    return $text;
}

此后想到,倘若应用这些格局的开发者想扩张恐怕忽视某个专盛名词,那该如何做呢?
于是,我又将 properNoun() 方法改造如下:

/**
 * 专有名词使用正确的大小写
 * Correct English proper nouns.
 *
 * @param $text
 * @param array $extend
 * @param array $ignore
 *
 * @return null|string|string[]
 */
public function properNoun($text, array $extend = [], array $ignore = [])
{
    $dict = include __DIR__ . '/../data/dict.php';
    if ($extend) {
        $dict = array_merge($dict, $extend);
    }
    if ($ignore) {
        $dict = array_diff($dict, $ignore);
    }

    foreach ($dict as $noun) {
        $text = preg_replace("/\b{$noun}\b/i", $noun, $text);
    }
    return $text;
}

开源项目学习进程

1、SqlBuilder项目 

2、ehcache

3、hibernate基本使用

开发计算

  • 学会科学上网;
  • 擅长 谷歌、Github 和
    StackOverflow,那三样“神器”会帮你消除掉开发进程中蒙受的两头(或者说所有)问题;
  • 学会一些 谷歌(Google)搜索小技巧。例如将追寻关键字翻译成爱尔兰语单词,那样的搜索结果会令你更满足;
  • 葡萄牙共和国语真的很首要。最起码你应当在 Chrome 浏览器上设置3个 Google
    翻译

    的插件;
  • PHPUnit 真的很有用,尤其是在频仍增改效用依旧供给代码重构的品类中。
  • 决不让祥和仅限于2个编制程序语言,学习其余一门或多门语言作为协理,有益于拓展思路和开辟眼界。
  • 多逛逛 Laravel China 那样的高格调社区;

本月中,小编在 GitHub
上开源了八个祥和的小品种:chinese-typesetting。那是三个纠正汉语文案排版的
Composer 包。

什么幸免过度替换

在自家觉着就要水到渠成的时候,作者用事先写好的 PHPUnit
单元测试代码进行了测试,结果报出了不当,在上述措施中,假使传入的参数是含有
HTML 标签的富文本,那么 HTML 的成分、成分属性以及值都有大概会被轮换。

什么样制止超负荷替换这几个题目吗?也正是说:

只替换文本,而忽略 HTML 标签及标签内部的情节?

小编尝试写了有个别套匹配方案,都未果了。最后依然请出了 Google大神来协助。那里,搜索的关键字很要紧,最好想把你要物色的首要性词翻译成对应的英文单词,那样搜索出的结果会令你更惬意。结果作者找到了消除方案:Matching
A Word / Characters Outside Of Html
Tags

透过下边这部文章的提示,笔者又将 properNoun() 方法改造如下:

public function properNoun($text, array $extend = [], array $ignore = [])
{
    $dict = include __DIR__ . '/../data/dict.php';
    if ($extend) {
        $dict = array_merge($dict, $extend);
    }
    if ($ignore) {
        $dict = array_diff($dict, $ignore);
    }
    foreach ($dict as $noun) {
        // Matching proper nouns Outside Of Html Tags
        $text = preg_replace("/(?<!\.|[a-z]){$noun}(?!\.|[a-z])(?!([^<]+)?>)/i", $noun, $text);
    }
    return $text;
}
  • 在国语与英文字母/用于数学、科学和工程的希腊共和国(Ελληνική Δημοκρατία)字母/数字之间添加空格;
  • 有限度的全角转半角(英文、数字、空格以及部分特殊字符等利用半角字符);
  • 修补错误的标点;
  • 解除 HTML 标签的样式;
  • 清除空的 HTML 标签;
  • 消除段首缩进;

最终的话

倘若还有啥必要说的话,那正是求 Star
啦,哈哈哈哈哈。项目地址:https://github.com/jxlwqq/chinese-typesetting

什么改进和优化代码逻辑

自小编在写这一个效果的时候,也在研商和参考一些共处开源项目的达成逻辑。在探望开源项目
auto-correct 的一个
commit
上后(PS:这几个 PRubicon 是社区大神 overtrue
提交的。),我又将 properNoun() 方法改造如下:

public function properNoun($text, array $extend = [], array $ignore = [])
{
    $dict = include __DIR__ . '/../data/dict.php';
    if ($extend) {
        $dict = array_merge($dict, $extend);
    }
    if ($ignore) {
        $dict = array_diff($dict, $ignore);
    }
    foreach ($dict as $noun) {
        $text = preg_replace("/(?<!\.|[a-z]){$noun}(?!\.|[a-z])/i", $noun, $text);
    }
    return $text;
}

本周,公司支付工作不多,无加班,于是先河思索新效用修正丹麦语专知名词大小写的实现。

本篇文章不是为了记开发流水账,而是想把支付进度的境遇的难题以及缓解思路和豪门进行沟通和学习。小编是一名普通的
PHP
工程师,希望对初级开发同学有所帮衬。具体的心体面相会文末的总结

法语专著名词的数码来源于

第叁,面临的率先个难点是:

法语专有名词的数量从哪来?

自己初次想到的是 Python 有三个自然语言处理的包
NLTK,那几个包有个名为 pos_tag
的函数,能够用来辨别并标注每一种单词的词性,当中被标明为 NNP 或 NNPS
的单词正是专盛名词(Proper Noun)。笔者估计,NLTK
数据包里应该有二个应和的专有名词数据集,可是,苦于能力有限,作者直接从未找到。

上述的路子走不通后,作者又经过 Google搜索,发现经过互联网字典来获取数据是一条有效的方案。通过这一格局,终于在
Wiktionary
找到了意大利语专有名词列表。于是,利用 Python
写了3个爬虫小本子,爬取了相应的数据。

最后,就是对爬取到的数码开始展览了有个别打点和筛选。

筛选方案如下:

  • 使用 is_numeric() 方法,剔除诸如 007 等词汇;
  • 使用 '/\W/' 正则,剔除诸如 ǃXóõ 等词汇;
  • 剔除 strlen 方法,剔除 A 等单字节词汇;
  • 删去跟 HTML、CSS、JavaScript 保留字冲突的词汇;

chinese-typesetting
包括以下效用:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图