Hon*_*rek 50 python extract machine-learning html-parsing web-scraping
我想从 Python中的网页中提取特定类型的信息.让我们说邮政地址.它有数千种形式,但仍然可以辨认出来.由于存在大量表单,因此编写正则表达式甚至是语法之类的东西并使用解析器生成器来解析它可能非常困难.
所以我认为应该采用的方式是机器学习.如果我理解得很好,我应该能够制作一个数据样本,在那里我将指出应该是什么结果,然后我有一些东西可以从中学习如何自己识别结果.这就是我对机器学习的全部了解.也许我可以使用一些自然语言处理,但可能并不多,因为所有的图书馆都使用英语,我需要这个用于捷克语.
问题:
更新:
正如你们所提到的,我应该展示一些我想要脱离网络的数据,这里有一个例子.我对电影放映时间很感兴趣.它们看起来像这样(其中三个):
<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>
Run Code Online (Sandbox Code Playgroud)
或者像这样:
<strong>POSEL 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 …<br> <br>
<strong>VE STÍNU 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? 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 ve 3D 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>
Run Code Online (Sandbox Code Playgroud)
或者它看起来像任何类似的东西.HTML标记中没有特殊规则,顺序没有特殊规则等.
Nik*_*Nik 55
首先,您的任务适合研究的信息提取领域.此任务主要有两个级别的复杂性:
总体上最具挑战性的部分是使用DOM树并生成正确的功能.以正确的方式进行数据标记也是一项繁琐的工作.对于ML模型 - 看看CRF,2DCRF,半马尔可夫CRF.
最后,这在一般情况下是IE研究的前沿,而不是你可以在几个晚上做的黑客.
ps我也认为NLTK不会很有帮助 - 它是一个NLP,而不是Web-IE库.
小智 8
据我所知,使用机器学习方法有两种方法可以完成这项任务。
1.使用计算机视觉训练模型,然后根据您的用例提取内容,diffbot.com已经实现了这一点。 他们还没有开源他们的解决方案。
2.解决这个问题的另一种方法是使用监督机器学习训练二元分类器对内容与样板进行分类,然后提取内容。这种方法用于dragnet。 以及围绕该领域的其他研究。您可以查看不同内容提取技术之间的基准比较。
至于自然语言处理,如果你正在使用python,你应该绝对检查梦幻般的(恕我直言,不隶属于他们)自然语言工具包,它有许多算法的实现,其中许多是语言无关的(比如,n-gram) ).
对于python中的机器学习库的推荐,我会说它取决于你想要使用什么技术,但opencv实现了一些常见的算法.机器学习是一个非常广阔的领域.只是为了监督学习分类子问题,有朴素贝叶斯,KNN,决策树,支持向量机,至少十几种不同类型的神经网络......这个列表一直在继续.这就是为什么,正如你所说,一般来说,机器学习没有"快速入门"或教程.我的建议是,首先,理解基本的ML术语,其次,理解子问题(我建议监督学习分类),第三,研究解决这个子问题的简单算法(KNN依赖于高中数学).
特别是关于你的问题:你似乎想要在巨大的数据集(文本)中检测到一条数据(邮政编码)的存在,即AFAIK,而不是ML处理的问题类型.分类算法期望相对小的特征向量.要获得这一点,您需要执行所谓的降维:这意味着,隔离看起来像潜在邮政编码的部分.只有这样,分类算法才对其进行分类(例如,"邮政编码"或"非邮政编码").
因此,在考虑使用ML来解决此问题之前,您需要找到一种隔离潜在匹配的方法.如果您不使用或不能使用正则表达式或解析,这肯定会引发自然语言处理.
首先,机器学习不是魔术。这些算法执行特定任务,即使这些任务有时可能有点复杂。
任何此类任务的基本方法是生成一些具有合理代表性的标记数据,以便您可以评估自己的表现。“BOI”标签可以工作,为每个单词分配一个标签:“O”(外部)如果它不是你要找的东西,“B”(开始)如果它是地址的开头,以及地址中所有后续单词(或数字或其他)的“I”。
第二步是考虑你想如何评估你的成功。发现地址的大部分内容是否重要,或者您是否还需要确切地知道它是什么(邮政编码、街道或城市等)。这会改变您算作错误的内容。
如果您希望命名实体识别器运行良好,您必须充分了解您的数据,并决定最适合这项工作的工具。这很可能是一系列正则表达式,其中包含一些关于如何组合结果的规则。我希望您能够使用相对简单的程序找到大部分数据。一旦你有了一些简单的东西,你就会检查误报(结果证明不是你要找的东西)和漏报(你错过的东西),并寻找模式。如果您看到可以轻松修复的内容,请尝试一下。regex 的一个巨大优势在于,不仅可以更轻松地将某些内容识别为地址的一部分,还可以检测它是哪一部分。
如果你想超越它,你可能会发现许多 NLP 方法在你的数据上表现不佳,因为“自然语言处理”通常需要看起来像(你猜对了)自然语言的东西来识别什么是什么。
或者,由于您可以将其视为分块问题,因此您可以使用最大熵马尔可夫模型。在这种情况下,这使用从一种类型的单词转换到另一种类型的单词以将文本块化为“地址的一部分”和“非地址的一部分”的概率。
祝你好运!
归档时间: |
|
查看次数: |
31536 次 |
最近记录: |