livingbio / article-extraction-benchmark

Article extraction benchmark: dataset and evaluation scripts
MIT License
0 stars 0 forks source link

新增 dataset, 使用開源的方案測試結果正確度 #5

Open lucemia opened 2 years ago

lucemia commented 2 years ago

Problem

Solution

sp8va100 commented 2 years ago

要做dataset的話,需要定義好

我才能去做dataset~

lucemia commented 2 years ago

要做dataset的話,需要定義好

  • 我們的content需要納入的資訊
  • 我們的content不要加入的資訊

我才能去做dataset~

目前看起來就照原本的 dataset 一樣的邏輯建立 dataset 就好了

你是問這個嗎?

sp8va100 commented 2 years ago

原本dataset不會將圖片的連結納入content中,但是我們的parser會將圖片連結爬進content裡,會造成扣分。 現在我要建造新的dataset,那這個dataset我是要依照原本dataset的邏輯建造,要evaluate的時候再過濾掉圖片連結, 還是要直接將圖片連結納入content中去建造新的Dataset,這樣就可以直接evaluate

lucemia commented 2 years ago

因為其他 parser 不支援這些額外資訊,因此會沒辦法正確評價其他 parser

我們最終需要的 Parser 需要 正文+ 圖片連結 + extra 資訊,但這些資訊需要能正確區隔開來才有用, 所以可以先評正文的分數,然後來挑選我們應該由哪個 Parser 為基礎來加入這些 extra info

sp8va100 commented 2 years ago

原本dataset是用AutoExtract and Diffbot去爬下來的,但是這兩個沒有開源。 因此,我會先用看看評分不錯的newspaper3k去做做看。

lucemia commented 2 years ago

原本dataset是用AutoExtract and Diffbot去爬下來的,但是這兩個沒有開源。 因此,我會先用看看評分不錯的newspaper3k去做做看。

記得要人力 review, 需要人力 review 時我會找其他 interns 一起做

sp8va100 commented 2 years ago

好!我先試試看在評估一下時間

sp8va100 commented 2 years ago
sp8va100 commented 2 years ago

已標註完成。

Total: 309篇

Edit: 之後可能會減少,因為其他parser如果產生error就不能爬必須刪掉該testcase

sp8va100 commented 2 years ago

準備要測試的parser(選擇與我們gparser評分差不多或是好的parser):

sp8va100 commented 2 years ago

Update in :https://paper.dropbox.com/doc/Benchmark-A.I.-Parser--BWya09SDgK79wPV2h20aR5PHAg-UPbZxMrxYm4XWR452HaTq

上半部是readability沒有做後處理,下半部為後處理後(詳細result和比對的data) Screen Shot 2021-11-24 at 2 28 35 PM

sp8va100 commented 2 years ago

已將html files放上來了 https://github.com/livingbio/article-extraction-benchmark/tree/master/new-html

lucemia commented 2 years ago

目前測試 gparser 的結果,是 MachineParser + 手工寫的 Parser 的結果 要測試 MachineParser 的結果

sp8va100 commented 2 years ago
lucemia commented 2 years ago

新增了一個 POST /parse-article 方式,可以 傳 raw_content (html) 上來

lucemia commented 2 years ago
sp8va100 commented 2 years ago

比對了一下兩邊的結果272/292完全一模一樣。

有不一樣的20筆,查看了其中8筆,不一樣的地方都很細微且幾乎都是內容以外的文字產生差異ex.爬到不同的更多內容的文章標題、Total viewer的數量、\n數量差異。 在計算評分時幾乎不會被影響到,因此評分相近。

會再去檢查一下source code看一下問題。

lucemia commented 2 years ago

比對了一下兩邊的結果272/292完全一模一樣。

有不一樣的20筆,查看了其中8筆,不一樣的地方都很細微且幾乎都是內容以外的文字產生差異ex.爬到不同的更多內容的文章標題、Total viewer的數量、\n數量差異。 在計算評分時幾乎不會被影響到,因此評分相近。

會再去檢查一下source code看一下問題。

那應該是指定 name 沒有發生作用的緣故

sp8va100 commented 2 years ago

https://gparsed-admin.gliaoffice.com/parsed/api/parse?name=MachineParserV2&url= 想確定一下,name=MachineParserV2是加在上面那個位置嗎?

lucemia commented 2 years ago

https://gparsed-admin.gliaoffice.com/parsed/api/parse?name=MachineParserV2&url= 想確定一下,name=MachineParserV2是加在上面那個位置嗎?

用這個試試看 https://genv-parsed-al23s7k26q-de.a.run.app/docs#/default/parse_article_debug_parse_article_post

sp8va100 commented 2 years ago

Update: https://paper.dropbox.com/doc/Benchmark-A.I.-Parser--BXIz5L7B73GbzK~vLjNYOfAWAg-UPbZxMrxYm4XWR452HaTq

之前做dataset的時候是早上建好dataset,下午的時候才將html存下來,可能在這個期間有18間媒體有更新script導致現在用url或存下來的html爬蟲都爬不了,先不比較這18筆

正在檢查兩邊爬下來的結果比較大的差異

sp8va100 commented 2 years ago

Update: https://paper.dropbox.com/doc/Benchmark-A.I.-Parser--BXM6Fvquzahg7Su6DSBbRDRiAg-UPbZxMrxYm4XWR452HaTq

這次評價用html去爬蟲,只要不能爬的html都註記成空字串。

  1. 第一部分分數:使用原本的評分方式(比較是在比對有爬到結果的內容與ground truth)。

  2. 第二部分分數:在檢查他的precision和recall算法時,發現precision會忽略掉tp + fp == 0的值(空字串和ground truth比較的時候,fp + tp == 0),recall也會忽略掉tp + fn == 0值考慮進來(爬出來的字串與ground truth完全不一樣),因此第一部分算法不會考慮到空字串的扣分和與gt完全不一樣的情況。故第二部分的分數考慮空字串的扣分後,可以看到像goose3(爬出來有很多空字串),precision分數降低許多。

  3. 第三部分分數:除了考慮空字串的扣分,在recall的部分也將tp + fn == 0值考慮進來(爬出來的字串根ground truth完全不一樣)。

sp8va100 commented 2 years ago

主要是透過定義不同的XPATH(ex BODY_XPATH, COMMENT_XPATH, DISCARD_XPATH, …..),在html tree中過濾掉不需要的nodes和找到想要的content。

在html tree中,先清理,在找到最有可能是content的candidates,去做評分再提取出article

也是透過html tree 去進行清理,在找content

(上述三個都沒有用到AI)

lucemia commented 2 years ago

麻煩初步評估如何擴充:

  1. 如何適應新的網頁 dataset
  2. 如何抓出更多網頁上的資訊
sp8va100 commented 2 years ago
  1. Trafilatura利用定義許多x-path語法去抓取需要或是排除掉不需要的內容。因此要適應新網頁,需要手動的去調整原本設定的條件需要增加或減少。

  2. Trafilatura本身可以抓取圖片、帶連結的文字和留言 但是圖片的抓取效果目前試了4個網頁,有出現漏抓或是沒有抓到任何一張的情況。 要抓到更多內容的話,需要自己列出目標的x-path語法,調整code。

另外,因為他在前處理的時候就將html tag轉換成xml standard,所以在output xml格式的時候 tag 不會是html 的tag。

sp8va100 commented 2 years ago

剛剛發現trafilatura有paper,有看到一個2018年的machine learning parser叫web2text 之後可以試試看效果

sp8va100 commented 2 years ago

Update: https://paper.dropbox.com/doc/Benchmark-A.I.-Parser--BXlnDJDr8hccOijD0gEkfvg9Ag-UPbZxMrxYm4XWR452HaTq

link_density_test
input : element tree
output: Boolean(True→ high density, need to delete. False→low density, may be content), my list(the word in )

def link_density_test(element):
  links_xpath = element.xpath('.//ref') # find links
  if links_xpath:
    elemtext = element's context
    elemlen = length of trim(elemtext) # trim: remove unneccessary space within a text
    if element.tag == 'p':
      limitlen, threshold = 25, 0.8 # limitlen:文字少於這個數量就歸類non-content # threshold: link文字佔比超過這一個比率就歸類為non-content
    else:
      if element.getnext() is None:
        limitlen, threshold = 200, 0.66
      else:
        limitlen, threshold = 100, 0.66
    if elemlen < limitlen:
      linklen = the total length of word in links_xpath
      elemnum = how many links
      shortelems = the number of the word with length < 10 in links_xpath
      mylist = list of the word in links_xpath
      if elemnum == 0:
        return True, mylist
      if linklen >= threshold*elemlen or shortelems/elemnum >= threshold:
        return True, mylist
  return False, mylist
sp8va100 commented 2 years ago

Update: https://paper.dropbox.com/doc/Benchmark-A.I.-Parser--BXlnDJDr8hccOijD0gEkfvg9Ag-UPbZxMrxYm4XWR452HaTq

Trafilatura performs stable

Screen Shot 2021-12-14 at 3 14 28 PM