[發案] 修正newspaper3k句子分隔問題

看板CodeJob作者 (歐洲提督)時間10月前 (2023/06/04 17:16), 10月前編輯推噓0(002)
留言2則, 1人參與, 10月前最新討論串1/1
 發案人:曾先生 聯絡方式1:站內信 聯絡方式2:站內信聯繫後交換Skype,WhatsApp,Line或Telegram 所在地區 :海外(UTC+2) 有效時間:自宣告接案起16小時(時間認定詳附註)。 為保障接案者,本人聲明同一時間僅宣告一位接案者(會推文更新案件狀態), 亦不接受非接案者搶答。 但接案者若逾時,則視同專案完全失敗解約,本人將逕行與下一位有意者面談。 專案說明:修改newspaper3k程式庫(Python) 解決句子分隔問題。 詳見附註。   預算:NT$10000(估計合格接案者能在10個工時內解決) 接案者要求: 1. 有能力深入Python開源程式庫(newspaper3k)修正問題程式碼。 2. 熟悉 Python 下的新聞網頁處理,包括下列程式庫的使用: newspaper3k(必), lxml(必), beautifulsoup4(選) 3. 工作成果須保密至2024-05-31 (有不便說明的理由 故無法立刻開源)   附註: 一、問題描述 * newspaper3k 是一個用來解析新聞網頁的 Python 程式庫。但它有一個問題:就是處理 英語新聞的時候,parse 出來的文章不時會發生前一句的句點跟下一句的首個字母之間漏 掉空白字元的情形。例如"...in the city.The mayor said..."這樣。這會導致兩個句子 被錯誤的辨識成同一句,句子長度加長、文法結構無法正確解析,進而對訓練諸多AI模型 帶來負面影響。 本專案希望藉由修改此程式庫,來消除上述問題。 下面是一些問題文章範例: https://tinyurl.com/2cz9vxx5 https://bulawayo24.com/news/national/169936 https://tinyurl.com/bfdk3kdn https://www.jpost.com/Opinion/Another-tack-Sympathy-for-the-scarecrow-415892 下列程式碼可以驗證上述文章經newspaper3k解析後,部份句子之間遺漏空白。 =========================================================== from newspaper import Article url = "" # 注意不要填入tinyurl縮過的網址 article = Article(url=url, fetch_images=False) article.download() article.parse() # 這個函式的內部邏輯需要修正 print(article.text) =========================================================== 二、解決方案要求 1. 接案者須將成果上傳至發案者的GitHub或GitLab,並新增一個pull request。 聯繫時發案者會給予存取權限,成功設定後宣告計時開始。 專案完成時刻,則以接案者通知發案者的時刻認定。 2. 通知發案者專案完成後,須立即Demo,解釋程式碼修正了哪些邏輯, 並以單元測試或直接執行等適當方式證明解方有效。Demo出錯可容許當場 做出3分鐘以內的小修正。如3分鐘內未能解決,視同專案完全失敗。 3. 上面提供的4個案例皆須成功解析,否則視同專案完全失敗。 4. 恕不能接受下列解決方案: (A) 用類似 "[a-z0-9]\.[A-Z0-9]" 的 regex 去直接拆分解析後的文句: 團隊已經確認過,這種事後解法基本不能接受。因為還是太容易誤拆 v.100 或 K.v.K 之類的名詞,造成模型的正確性比原本更糟。 (B) 更換library:目前團隊已有其他修正建立在newspaper3k上 (C) 使用AI模型:我們每天處理幾十萬篇文章,如此算力成本太高。 (D) 解方能正確的分隔句子,但文章其他部份出現原本沒有的損壞。 (E) 最後,雖然有能力修正開源程式庫的先進顯然不會這樣取巧,但下面這點還是 要提一下,以防不必要的糾紛: 只為了通過單元測試,而根據特定網頁或特定的domain name去做個案處理的方式, 是不可接受的。例如:if "jpost.com" in article.url,這種針對單一網站的處理 邏輯,就不可接受。 當然,如果認定某一類別的網頁結構是元兇,是可以撰寫特殊邏輯去處理的。但這個結構 必須能夠適用複數的新聞網站。舉兩個例子: 例1:假設您認定 <br /> 沒有被正確處理,那麼在article.parse()的內部邏輯某處, 把這個tag取代成換行符號是OK的,因為顯然許多新聞網頁都包含<br />的元素 (這邊只是舉例....我其實看過這部份的邏輯但沒發現它做錯)。 例2:找到 itemprop="articleBody" 之類的區塊做特殊處理,也是屬於一般性的邏輯 感謝您的耐心閱讀! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 77.161.173.88 (荷蘭) ※ 文章網址: https://www.ptt.cc/bbs/CodeJob/M.1685870161.A.426.html ※ 編輯: oNeChanPhile (77.161.173.88 荷蘭), 06/04/2023 17:30:47 ※ 編輯: oNeChanPhile (77.161.173.88 荷蘭), 06/04/2023 17:57:55

06/05 16:33, 10月前 , 1F
目前有人來信 即將洽談
06/05 16:33, 1F

06/05 17:20, 10月前 , 2F
問題已解決
06/05 17:20, 2F
文章代碼(AID): #1aV5PHGc (CodeJob)