本篇文章不是為了記開發流水賬,而是想把開發過程的遇到的問題以及解決思路和大家進行交流和學習。我是一名普普通通的 php 工程師,希望對初級開發同學有所幫助。具體的心得體會見文末的總結。本週,公司開發事務不多,無加班,於是開始構思新功能糾正英語專有名詞大小寫的實現。
首先,面臨的第乙個問題是:
英語專有名詞的資料從哪來?我最先想到的是 python 有乙個自然語言處理的包 nltk,這個包有個名為 pos_tag 的函式,可以用來識別並標註每個單詞的詞性,其中被標註為 nnp 或 nnps 的單詞就是專有名詞(proper noun)。我猜想,nltk 資料報裡應該有乙個對應的專有名詞資料集,但是,苦於能力有限,我一直沒有找到。
最後,就是對爬取到的資料進行了一些整理和篩選。
篩選方案如下:
最初的**如下:
/**
* 專有名詞使用正確的大小寫
* correct english proper nouns.
* * @param $text
* * @return null|string|string
*/public function propernoun($text)
\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 = )
if ($ignore)
foreach ($dict as $noun) \b/i", $noun, $text);
}return $text;
}
我在寫這個功能的時候,也在研究和參考一些現有開源專案的實現邏輯。在看到開源專案 auto-correct 的乙個 commit 上後(ps:這個 pr 是社群大神 overtrue 提交的。),我又將propernoun()
方法改造如下:
public function propernoun($text, array $extend = , array $ignore = )
if ($ignore)
foreach ($dict as $noun)
if ($ignore)
foreach ($dict as $noun)
return $text;
}
如何高效的設計乙個新功能?
我從事過多年的概念設計,原型設計,測試到最終構建和部署應用程式的功能和api編寫的工作。根據我的經歷。很多次,我開發完乙個新的功能後,準備紀錄下來這個功能如何用。我會先介紹總結特徵的有用性,我會思考許多。有時寫作會很容易和流暢。有時我會寫到一半,不知道後面該如何寫了。連我自己都不知道,為什麼會發生這...
Kotlin 乙個好用的新功能 Parcelize
在開發中,如果有需要用到序列化和反序列化的操作,就會用到 serializable 或者 parcelable,它們各有優缺點,會適用於不同的場景。serializable 的優點是實現簡單,你只需要實現乙個 serializable 介面,並不需要任何額外的 但是它的序列化和反序列化,實際上是使用...
Kotlin 乙個好用的新功能 Parcelize
在開發中,如果有需要用到序列化和反序列化的操作,就會用到 serializable 或者 parcelable,它們各有優缺點,會適用於不同的場景。serializable 的優點是實現簡單,你只需要實現乙個 serializable 介面,並不需要任何額外的 但是它的序列化和反序列化,實際上是使用...