80

PythonのWebページから特定の種類の情報を抽出したいと思います。住所を考えてみましょう。何千もの形がありますが、それでも、どういうわけか認識できます。フォームは多数あるため、正規表現や文法のようなものを記述して、それを解析するためにパーサジェネレータを使用することはおそらく非常に困難です。

ですから、私が進むべき道は機械学習だと思います。よく理解できれば、データのサンプルを作って、結果がどうあるべきかを指摘し、それから結果を自分で認識する方法を学ぶことができるはずです。機械学習について私が知っているのはこれだけです。自然言語処理を使用できるかもしれませんが、すべてのライブラリがほとんど英語で動作するため、おそらくそれほど多くはありません。チェコ語ではこれが必要です。

質問:

  1. 機械学習でこの問題を簡単に解決できますか?それは行くのに良い方法ですか?
  2. 私が始めることを可能にする簡単な例はありますか?私は機械学習の初心者であり、開始するには実用的なものが必要です。私の問題に近い方が良いです。シンプルな方が良いです。
  3. 機械学習用のPythonライブラリはたくさんあります。どちらが私の問題に最も適していますか?
  4. そのようなライブラリの多くは、科学的な環境からのものであるため、非常に使いやすいドキュメントを持っていません。ギャップを埋める、つまり機械学習についてまったく何も知らない初心者に焦点を当てた優れた情報源(本、記事、クイックスタート)はありますか?私が開くすべてのドキュメントは、ネットワーク分類データセットなど、理解できない用語で始まります。

アップデート:

皆さんがおっしゃったように、私がWebから取得しようとしているデータの一部を表示する必要があります。ここに例を示します。私は映画の上映時間に興味があります。それらは次のようになります(そのうちの3つ):

<div class="Datum" rel="d_0">27. června – středa, 20.00
</div><input class="Datum_cas" id="2012-06-27" readonly=""><a href="index.php?den=0" rel="0" class="Nazev">Zahájení letního kina 
</a><div style="display: block;" class="ajax_box d-0">
<span class="ajax_box Orig_nazev">zábava • hudba • film • letní bar
</span>
<span class="Tech_info">Svět podle Fagi
</span>
<span class="Popis">Facebooková  komiksová Fagi v podání divadla DNO. Divoké písně, co nezařadíte, ale slušně si na ně zařádíte. Slovní smyčky, co se na nich jde oběsit. Kabaret, improvizace, písně, humor, zběsilost i v srdci.<br>Koncert Tres Quatros Kvintet. Instrumentální muzika s pevným funkovým groovem, jazzovými standardy a neodmyslitelnými improvizacemi.
</span>
<input class="Datum_cas" id="ajax_0" type="text">
</div>

<div class="Datum" rel="d_1">27. června – středa, 21.30
</div><input class="Datum_cas" id="2012-06-27" readonly=""><a href="index.php?den=1" rel="1" class="Nazev">Soul Kitchen
</a><div style="display: block;" class="ajax_box d-1">
<span class="ajax_box Orig_nazev">Soul Kitchen
</span>
<span class="Tech_info">Komedie, Německo, 2009, 99 min., čes. a angl. tit.
</span>
<span class="Rezie">REŽIE: Fatih Akin 
</span>
<span class="Hraji">HRAJÍ: Adam Bousdoukos, Moritz Bleibtreu, Birol Ünel, Wotan Wilke Möhring
</span>
<span class="Popis">Poslední film miláčka publika Fatiho Akina, je turbulentním vyznáním lásky multikulturnímu Hamburku. S humorem zde Akin vykresluje příběh Řeka žijícího v Německu, který z malého bufetu vytvoří originální restauraci, jež se brzy stane oblíbenou hudební scénou. "Soul Kitchen" je skvělá komedie o přátelství, lásce, rozchodu a boji o domov, který je třeba v dnešním nevypočitatelném světě chránit víc než kdykoliv předtím. Zvláštní cena poroty na festivalu v Benátkách
</span>
<input class="Datum_cas" id="ajax_1" type="text">
</div>

<div class="Datum" rel="d_2">28. června – čtvrtek, 21:30
</div><input class="Datum_cas" id="2012-06-28" readonly=""><a href="index.php?den=2" rel="2" class="Nazev">Rodina je základ státu
</a><div style="display: block;" class="ajax_box d-2">
<span class="Tech_info">Drama, Česko, 2011, 103 min.
</span>
<span class="Rezie">REŽIE: Robert Sedláček
</span>
<span class="Hraji">HRAJÍ: Igor Chmela, Eva Vrbková, Martin Finger, Monika A. Fingerová, Simona Babčáková, Jiří Vyorálek, Jan Fišar, Jan Budař, Marek Taclík, Marek Daniel
</span>
<span class="Popis">Když vám hoří půda pod nohama, není nad rodinný výlet. Bývalý učitel dějepisu, který dosáhl vysokého manažerského postu ve významném finančním ústavu, si řadu let spokojeně žije společně se svou rodinou v luxusní vile na okraji Prahy. Bezstarostný život ale netrvá věčně a na povrch začnou vyplouvat machinace s penězi klientů týkající se celého vedení banky. Libor se následně ocitá pod dohledem policejních vyšetřovatelů, kteří mu začnou tvrdě šlapat na paty. Snaží se uniknout před hrozícím vězením a oddálit osvětlení celé situace své nic netušící manželce. Rozhodne se tak pro netradiční útěk, kdy pod záminkou společné dovolené odveze celou rodinu na jižní Moravu…  Rodinný výlet nebo zoufalý úprk před spravedlností? Igor Chmela, Eva Vrbková a Simona Babčáková v rodinném dramatu a neobyčejné road-movie inspirované skutečností.
</span>

またはこのように:

<strong>POSEL&nbsp;&nbsp; 18.10.-22.10 v 18:30 </strong><br>Drama. ČR/90´. Režie: Vladimír Michálek Hrají: Matěj Hádek, Eva Leinbergerová, Jiří Vyorávek<br>Třicátník Petr miluje kolo a své vášni podřizuje celý svůj život. Neplánuje, neplatí účty, neřeší nic, co může<br>počkat  do zítra. Budování společného života s přételkyní je mu proti srsti  stejně jako dělat kariéru. Aby mohl jezdit na kole, raději pracuje jako  poslíček. Jeho život je neřízená střela, ve které neplatí žádná  pravidla. Ale problémy se na sebe na kupí a je stále těžší před nimi  ujet …&lt;br> <br>

<strong>VE STÍNU&nbsp; 18.10.-24.10. ve 20:30 a 20.10.-22.10. též v 16:15</strong><br>Krimi. ČR/98´. Režie: D.Vondříček Hrají: I.Trojan, S.Koch, S.Norisová, J.Štěpnička, M.Taclík<br>Kapitán  Hakl (Ivan Trojan) vyšetřuje krádež v klenotnictví. Z běžné vloupačky  se ale vlivem zákulisních intrik tajné policie začíná stávat politická  kauza. Z nařízení Státní bezpečnosti přebírá Haklovo vyšetřování major  Zenke (Sebastian Koch), policejní specialista z NDR, pod jehož vedením  se vyšetřování ubírá jiným směrem, než Haklovi napovídá instinkt  zkušeného kriminalisty. Na vlastní pěst pokračuje ve vyšetřování. Může  jediný spravedlivý obstát v boji s dobře propojenou sítí komunistické  policie?&nbsp; Protivník je silný a Hakl se brzy přesvědčuje, že věřit nelze  nikomu a ničemu. Každý má svůj stín minulosti, své slabé místo, které  dokáže z obětí udělat viníky a z viníků hrdiny. <br><br>

<strong>ASTERIX A OBELIX VE SLUŽBÁCH JEJÍHO VELIČENSTVA&nbsp; ve 3D&nbsp;&nbsp;&nbsp; 20.10.-21.10. ve 13:45 </strong><br>Dobrodružná fantazy. Fr./124´. ČESKÝ DABING. Režie: Laurent Tirard<br>Hrají: Gérard Depardieu, Edouard Baer, Fabrice Luchini<br>Pod  vedením Julia Caesara napadly proslulé římské legie Británii. Jedné  malé vesničce se však daří statečně odolávat, ale každým dnem je slabší a  slabší. Britská královna proto vyslala svého věrného důstojníka  Anticlimaxe, aby vyhledal pomoc u Galů v druhé malinké vesničce ve  Francii vyhlášené svým důmyslným bojem proti Římanům… Když Anticlimax  popsal zoufalou situaci svých lidí, Galové mu darovali barel svého  kouzelného lektvaru a Astérix a Obélix jsou pověřeni doprovodit ho domů.  Jakmile dorazí do Británie, Anticlimax jim představí místní zvyky ve  vší parádě a všichni to pořádně roztočí! Vytočený Caesar se však  rozhodne naverbovat Normanďany, hrůzu nahánějící bojovníky Severu, aby  jednou provždy skoncovali s Brity. <br><br>

または、これに似たもののように見える場合があります。HTMLマークアップに特別なルールはなく、順序に特別なルールもありません。

4

7 に答える 7

77

First, your task fits into the information extraction area of research. There are mainly 2 levels of complexity for this task:

  • extract from a given html page or a website with the fixed template (like Amazon). In this case the best way is to look at the HTML code of the pages and craft the corresponding XPath or DOM selectors to get to the right info. The disadvantage with this approach is that it is not generalizable to new websites, since you have to do it for each website one by one.
  • create a model that extracts same information from many websites within one domain (having an assumption that there is some inherent regularity in the way web designers present the corresponding attribute, like zip or phone or whatever else). In this case you should create some features (to use ML approach and let IE algorithm to "understand the content of pages"). The most common features are: DOM path, the format of the value (attribute) to be extracted, layout (like bold, italic and etc.), and surrounding context words. You label some values (you need at least 100-300 pages depending on domain to do it with some sort of reasonable quality). Then you train a model on the labelled pages. There is also an alternative to it - to do IE in unsupervised manner (leveraging the idea of information regularity across pages). In this case you/your algorith tries to find repetitive patterns across pages (without labelling) and consider as valid those, that are the most frequent.

The most challenging part overall will be to work with DOM tree and generate the right features. Also data labelling in the right way is a tedious task. For ML models - have a look at CRF, 2DCRF, semi-markov CRF.

And finally, this is in the general case a cutting edge in IE research and not a hack that you can do it a few evenings.

p.s. also I think NLTK will not be very helpful - it is an NLP, not Web-IE library.

于 2012-11-18T20:41:18.423 に答える
15

tl;dr: この問題は ML を使用して解決できる可能性がありますが、トピックに慣れていない場合は簡単ではありません


Python 用の機械学習ライブラリが多数あります。

  • scikit-learnは、初心者向けの非常に人気のある汎用であり、小規模なデータセットの単純な問題に最適です。
  • Natural Language Toolkitには多くのアルゴリズムの実装があり、その多くは言語に依存しません (n-gram など)
  • Gensimはテキスト トピックのモデリングに最適です
  • Opencvはいくつかの一般的なアルゴリズムを実装しています (ただし、通常は画像に使用されます)
  • SpacyTransformersは、最新の (2020 年時点で最先端の) テキスト NLU (自然言語理解) 技術を実装していますが、複雑な技術に精通している必要があります。

通常、問題と使用したい手法に適したライブラリを選択します。

機械学習は非常に広大な分野です。教師あり学習分類サブプロブレムだけを考えて、「単純な」分類器だけを考えれば、単純ベイズ、KNN、デシジョン ツリー、サポート ベクター マシン、フィード フォワード ニューラル ネットワークなどがあります。リストは延々と続きます。これが、あなたが言うように、機械学習全般の「クイックスタート」やチュートリアルがない理由です。ここでの私のアドバイスは、第一に、基本的な ML 用語を理解すること、第二に、副問題を理解すること(教師あり学習内の分類をお勧めします)、第三に、この副問題を解決する単純なアルゴリズムを研究することです( KNNは高校レベルの数学に依存しています) )。

特にあなたの問題について:巨大なデータセット(テキスト)内のデータ(郵便番号)の存在を検出したいようです。従来の分類アルゴリズムでは、比較的小さな特徴ベクトルが想定されます。それを得るには、次元削減と呼ばれるものを行う必要があります。これは、潜在的な郵便番号のように見える部分を分離することを意味します。その後、分類アルゴリズムがそれを分類します (たとえば、「郵便番号」または「非郵便番号」など)。

したがって、ML を使用してこの問題にアプローチすることを考える前に、潜在的な一致を分離する方法を見つける必要があります。あなたが言ったように、正規表現や解析を使用しない、または使用できない場合、これには間違いなく自然言語処理が必要です。

NLU のより高度なモデルでは、テキスト全体を解析できる可能性がありますが、非常に大量の事前に分類されたデータが必要になる可能性があり、それらを説明することはこの質問の範囲外です。前に述べたライブラリは良い出発点です。

于 2012-11-12T00:09:12.083 に答える
2

このアプローチは、教師あり学習アルゴリズムである必要があります (通常、教師なしまたは半教師ありの方法よりもはるかに優れた結果が得られます)。また、基本的にテキストのチャンクを抽出する必要があることに注意してください。直観的には、アルゴリズムは「この文字から次の 3 行までが住所です」のようなことを言う必要があります。

これにアプローチする自然な方法は、単語レベルと文字レベルの n-gram 言語モデルの組み合わせになると思います。モデリング自体は非常に洗練されています。mcstar が指摘したように、Cross Validatedはこれらの詳細に入るのに適した場所です。

于 2012-11-13T18:20:25.600 に答える
2

情報抽出の分野に目を向けることをお勧めします。多くの人が、あなたが求めていることを正確に行う方法を研究してきました。機械学習に基づく情報抽出の手法と、機械学習に基づかない手法があります。

あなたが解決したい問題を代表する例を見ずに、さらにコメントすることは困難です (郵便の住所はチェコ語でどのように見えますか?)。

于 2012-11-12T00:17:46.283 に答える