LIBCAS / DL4DH

DL4DH – development of tools for effective utilization and mining of data from digital libraries to reinforce digital humanities research
GNU General Public License v3.0
8 stars 2 forks source link

Filtrácia paratextu #7

Closed bodnarIQ closed 2 years ago

bodnarIQ commented 3 years ago

Požiadavka: "Ve výzkumu mě zajímá samotný text odborných článků, měl bych mít tedy možnost z textu odfiltrovat paratext (čísla stránek a záhlaví s nadpisy apod.)"

Na toto sa mi nepodarilo nájsť žiaden nástroj, ktorý by to dokázal vyriešiť z textového reťazca. Bolo by to ale možné vyriešiť použitím lepších nástrojov pre OCR, ktoré by rozpoznaný text vrátili otagovaný, pomocou čoho by sme sa mohli rozhodovať, že či ide o paratext alebo nie. Verzovanie stránok podľa použitého OCR máme vyriešené, odfiltrovanie paratextu by ale tým pádom fungovalo iba na novších OCR. Máte nejaké dostupné nástroje na OCR, ktoré by tohoto boli schopné, alebo budeme musieť nejaký nástroj nájsť? Zatiaľ som narazil na Abby FineReader, ktorý sa najčastejšie považuje za najlepší.

Ďaľším potencionálnym riešením by bolo použitie REGEXu, čo ale nebude veľmi spoľahlivé, keďže obsah, na ktorom by sme to chceli použiť, je veľmi rozmanitý(niekedy je číslovanie stránok na začiatku, niekedy na konci, mohlo by dochádzať k odstráneniu časti textu ktorý nie je paratextom)

hlageek commented 3 years ago

Tohle právě umí grobid, který je stále under active development, takže myslím, že se stále zlepšuje. Byť na jiných než vědeckých článcích ty výsledky asi nebudou tak dobré. Nicméně rozlišení strukturních prvků - jako co je text a co je paratext - by mohlo dobře fungovat i na jiných vstupech.

image

Online demo grobidu je zde: https://cloud.science-miner.com/grobid/ Zde je příklad výstupu, z nějž by stačilo z elementu text extrahovat element p, aby člověk získal pouze text dokumentu.

<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve"
    xmlns="http://www.tei-c.org/ns/1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
    xmlns:xlink="http://www.w3.org/1999/xlink">
    <teiHeader xml:lang="en">
        <fileDesc>
            <titleStmt>
                <title level="a" type="main">This form is to be used for all personnel who do not hold an Australian Government national security clearance, including ongoing and non-ongoing employees, contractors, service providers and Attached Agency staff to report changes in their circumstances to the Austrade Security Team. If you hold an Australian Government Security Clearance, please do not use this form. Please complete the SVA 003 Change of Circumstances Notification Form that can be found on the Personnel Security HUB Page on the Hub and provide to the Austrade Security Team when completed. To: Austrade Security Team</title>
            </titleStmt>
            <publicationStmt>
                <publisher/>
                <availability status="unknown">
                    <licence/>
                </availability>
            </publicationStmt>
            <sourceDesc>
                <biblStruct>
                    <analytic>
                        <title level="a" type="main">This form is to be used for all personnel who do not hold an Australian Government national security clearance, including ongoing and non-ongoing employees, contractors, service providers and Attached Agency staff to report changes in their circumstances to the Austrade Security Team. If you hold an Australian Government Security Clearance, please do not use this form. Please complete the SVA 003 Change of Circumstances Notification Form that can be found on the Personnel Security HUB Page on the Hub and provide to the Austrade Security Team when completed. To: Austrade Security Team</title>
                    </analytic>
                    <monogr>
                        <imprint>
                            <date/>
                        </imprint>
                    </monogr>
                </biblStruct>
            </sourceDesc>
        </fileDesc>
        <encodingDesc>
            <appInfo>
                <application version="0.6.2-SNAPSHOT" ident="GROBID" when="2021-02-02T10:33+0000">
                    <desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
                    <ref target="https://github.com/kermitt2/grobid"/>
                </application>
            </appInfo>
        </encodingDesc>
        <profileDesc>
            <abstract/>
        </profileDesc>
    </teiHeader>
    <text xml:lang="en">
        <body>
            <div
                xmlns="http://www.tei-c.org/ns/1.0">
                <p>(dd/mm/yyyy)</p>
            </div>
            <div
                xmlns="http://www.tei-c.org/ns/1.0">
                <head>Change of Circumstances Notification</head>
            </div>
            <div
                xmlns="http://www.tei-c.org/ns/1.0">
                <head>Non-Security Clearance Holders (OEE and A-Based Staff)</head>
                <p>OFFICIAL: Sensitive (after first entry) </p>
            </div>
            <div
                xmlns="http://www.tei-c.org/ns/1.0">
                <head>Section 3 -Declaration and Signature</head>
                <p>I hereby declare that to the best of my knowledge and belief, the information provided in this form is true and complete. The supporting documents I have provided relate to me, are complete and correct and are issued by the issuing authority without alterations.</p>
                <p>Date: Signature:</p>
                <p>OFFICIAL: Sensitive (after first entry)</p>
            </div>
            <div
                xmlns="http://www.tei-c.org/ns/1.0">
                <head>Change of Circumstances Information</head>
                <p>The following list is a comprehensive, but not exhaustive, list of changes that must be reported to the Austrade Vetting Team: includes any contact with government officials that is not work-related or required to fulfil the responsibilities of your position with Austrade. This also includes work-related contact that you find suspicious; f) A family member, spouse/partner or person that you live with, being employed by a government organisation/agency (other than the Australian Government): please provide details of the organisation/agency, position title and period of employment; g) Changes in citizenship or nationality: If you assume a new citizenship, by either renouncing your current citizenship or attaining dual citizenship, the Austrade Vetting Team must be advised. Please also provide a certified copy of your new citizenship certificate to the Austrade Vetting Team; h) Involvement in criminal activity: this includes deliberate and accidental involvement; i) Criminal charges, warning or convictions; j) Involvement with any individual, group, society or organisation that may be of security concern or present a conflict of interest: this may include special interest groups that you are involved in that are not work-related or required to fulfil the responsibilities of your position with Austrade. This includes joining a political party; k) Change of employment within Austrade: position or location; l) Employment outside of Austrade: please provide dates of employment, organisation/agency, position title and reason for leaving position (if applicable). You will need to provide the Austrade Vetting Team with evidence of your employment i.e. payslip, letter of offer, contract of employment etc.; m) Security incidents: this includes security breaches and agency or employer sanctions for code of conduct misconduct; n) New passport/s: please provide a copy of any new passport/s which have been issued since your Pre-Employment Screening Pack was completed or last reviewed and have not previously been provided to the Austrade Vetting Team; o) Changes in financial circumstances: this may include receipt or giving of large amounts of money, significant increases in debt or possible financial hardship and bankruptcy. Generally this equates to plus or minus $10,000 AUD in each instance; p) Any other change in your circumstances that may be of concern to Austrade.</p>
            </div>
            <figure
                xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0">
                <head>Section 1 :</head>
                <label>1</label>
                <figDesc>Your detailsSection 2: Provide details of the change of circumstance. Further guidance is located on page 3 of this form. Section 3: To be signed by you</figDesc>
            </figure>
daliboris commented 3 years ago

Nemyslím, že výše uvedený příklad odfiltovává paratext (zejména živé záhlaví, popř. zápatí, kde bývá název knihy/kapitoly a číslo stránky). V TEI se pro živé záhlaví/zápatí používá element <fw> (https://tei-c.org/release/doc/tei-p5-doc/en/html/ref-fw.html). Doporučení pro ALTO navrhuje používat <StructureTag TYPE="Functional" LABEL="RunningTitle"/> (viz https://altoxml.github.io/documentation/use-cases/tags/ALTO_tags_usecases.html, ukázka Running titles). Bude potřeba ovběřit, jestli se ve výstupech OCR ve formátu ALTO tento element používá.

V naší ukázce Alta se pro živé záhlaví používá méně specifický element: <TextBlock ID="Page1_Block1" HEIGHT="39" WIDTH="114" VPOS="2621" HPOS="925" language="cs" STYLEREFS="StyleId-B6C403DA-804D-4EF1-87A0-F6324C459C47- font0">.

bodnarIQ commented 3 years ago

Testoval som nástroj GROBID pri niekoľkých publikáciach(stiahnuté formáty PDF z krameria), a pri niektorých dokumentoch to spadlo (Error encountered while requesting the server. [NO_BLOCKS] PDF parsing resulted in empty content) a pri iných to hodilo celý text pod jeden <div> tag, aj keď išlo o text zložený zo záhlavia s nadpisom, číslom stránky a pod. Vyzerá to tak, že aj GROBID dokáže pracovať iba s PDF súbormi textového typu, pri naskenovaných obrázkoch v PDF to nedokáže nájsť žiaden text, a keďže väčšina publikácií, s ktorými budeme pracovať je práve tohto typu, obávam sa že GROBID sa s tým nepopasuje.

Prezrel som zopár publikácií, a podľa mojich zistení sa vo výstupoch OCR vo formáte ALTO nepoužívajú tagy <StructureTag>. Číslovanie stránok je súčasťou obyčajného <TextBlock> tagu, s tým rozdielom, že sa nachádza pod <BottomMargin>, z čoho sa dá vyčítať, že ide o text v zápatí. Toto ale nie je sto percentné, pretože sa mi podarilo nájsť aj publikáciu, kde bol nadpis kapitoly v záhlaví, a tento text nebol umiestnený medzi tagmi <TopMargin>, ale v tele textu.

V naší ukázce Alta se pro živé záhlaví používá méně specifický element: .

Tento element sa bežne používa na označenie textového bloku v tele textu, nemáme podľa čoho rozlíšiť, či má ísť o záhlavie. Pomocou ALTA by sme mohli z textu odfiltrovať všetko, čo sa v ALTE nachádza pod niektorým z <XXXMargin> tagov. Iné riešenie momentálne nevidím.

stranak commented 3 years ago

Nemám k tomuto nic užitečného, jen chci říci, že toto je podle mých experimentů největší slabina současného OCR: analýza layoutu. Nejde jen o rozdělení text/paratelxt, ale i spojení článku v novinách ("pokračování ze str. 2), identifikace popisku obrázku a zařazení i s obrázkem na správné místo (obrázek přes 2 sloupce), atd.

Chci jen říci, že toto je bod, na který bychom se měli soustředit, hlavně při vymýšlení nových projektů. Základ je připravit perfektně označkovaná trénovací data, aby se daly vyvíjet algoritmy, které se to naučí.

hlageek commented 3 years ago

A co tento workflow: Tesseract -> HOCR XML –> PAGE XML? Popsáno zde na stackoverflow. Nástroj Page Convertor and Validator slibuje podporu ALTO a "Removal of layout elements".

stranak commented 3 years ago

Třeba je to výborné, třeba na některý typ textů ... proto jsou důležitá ta ručně označkovaná evaluační data. Kdybychom je měli, můžete pustit test a spočítat úspěšnost. Dokud je mít nebudeme, budeme hádat, nebo používat "anecdotal evidence", což ale málo řekne o jiných dokumentech než těch pár, co si zkusíme. Berte to jako "poznámku na okraj" :-)

bukovskyIQ commented 3 years ago

Dle výsledků analýzy pro tento typ případu užití není Grobid vhodným nástrojem.

Vycházíme ze stavu, že existuje ALTO (jinak vyžádáváme z Recognition serveru).

Pokud ALTO obsahuje rozeznané bloky paratextu, budeme schopni tento paratext odstranit. Ne všechny publikace tyto rozeznané bloky mají, do budoucna možnost prohloubit analýzu o vhodná či nová řešení.

Prozatím pozastavujeme