[发案] 修正newspaper3k句子分隔问题(已结案)

楼主: oNeChanPhile   2023-06-04 17:15:58
 发案人:曾先生
联络方式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" 之类的区块做特殊处理,也是属于一般性的逻辑
感谢您的耐心阅读!
楼主: oNeChanPhile   2023-06-05 16:33:00
目前有人来信 即将洽谈问题已解决

Links booklink

Contact Us: admin [ a t ] ucptt.com