利用机器学习从网页中提取信息

2024-05-16 23:44:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用Python从web页面中提取特定类型的信息。比如说邮政地址。它有上千种形式,但它还是可以识别的。由于有大量的表单,编写正则表达式,甚至编写类似语法的语法,并使用语法分析器生成器对其进行解析可能会非常困难。

所以我认为我应该走的路是机器学习。如果我理解的很好,我应该能够做一个数据样本,在那里我将指出什么应该是结果,然后我有一些东西可以从中学习如何识别结果本身。这是我对机器学习的全部了解。也许我可以使用一些自然语言处理,但可能不是所有的库都主要使用英语,我需要这个用于捷克语。

问题:

  1. 我能用机器学习很容易地解决这个问题吗?这是个好办法吗?
  2. 有什么简单的例子可以让我开始吗?我是机器学习的新手,我需要一些实用的东西来开始;离我的问题越近越好;越简单越好。
  3. 有很多用于机器学习的Python库。哪一个最适合我的问题?
  4. 许多这样的lib都不是很容易使用的文档,因为它们来自科学环境。有没有什么好的资料(书籍、文章、快速入门)可以弥合这一差距,例如,把重点放在对机器学习一无所知的新手身上?我打开的每个文档都以我不懂的术语开头,比如网络分类数据集等等

更新:

正如你们所提到的,我应该展示一段我试图从网络上获取的数据,下面是一个例子。我对电影有兴趣。它们看起来像这样(其中三个):

<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 …<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标记中没有特殊规则,顺序中没有特殊规则等


Tags: brdiv机器veajaxclassspanst
3条回答

据我所知,使用机器学习方法有两种方法来完成这项任务。

1.使用计算机视觉来训练模型,然后根据您的用例提取内容,这已经由diffbot.com.实现 而且他们还没有开源的解决方案。

2.解决这个问题的另一种方法是使用有监督的机器学习来训练二进制分类器来对内容和样板进行分类,然后提取内容。这种方法用于dragnet. 以及这方面的其他研究。您可以查看不同内容提取技术中的benchmark comparison

至于自然语言处理,如果你使用python,你绝对应该检查奇妙的(IMHO,不附属于它们的)Natural Language Toolkit,它有很多算法的实现,其中许多算法是语言不可知的(比如n-grams)。

对于python中的机器学习库的推荐,我认为这取决于您想使用什么技术,but opencv implements some common algorithms。机器学习是一个非常广阔的领域。对于监督学习分类子问题,有朴素贝叶斯,KNN,决策树,支持向量机,至少十几种不同类型的神经网络。。。名单上有很多。这就是为什么,正如你所说,一般来说,机器学习没有“快速入门”或教程。我的建议是,首先,理解基本的ML术语,其次,理解一个子问题(我建议监督学习分类),然后,研究一个简单的算法来解决这个子问题(a3依赖于高中数学)。

特别是关于您的问题:似乎您希望检测大型数据集(文本)中是否存在一段数据(邮政编码),即AFAIK,而不是问题ML处理的类型。分类算法需要相对较小的feature vector。要获得这一点,您需要执行所谓的a dimensionality reduction:这意味着,隔离看起来像潜在邮政编码的部分。只有这样分类算法才能对其进行分类(例如,将其归类为“邮政编码”或“非邮政编码”)。

因此,在考虑使用ML解决此问题之前,您需要找到隔离潜在匹配项的方法。如您所说,如果您不使用或不能使用regex或解析,这肯定需要自然语言处理。

首先,你的任务属于信息提取领域。此任务的复杂性主要有两个级别:

  • 从给定的html页面或具有固定模板的网站中提取 (就像亚马逊)。在这种情况下,最好的方法是查看HTML代码 ,并设计相应的XPath或DOM选择器以 得到正确的信息。这种方法的缺点是 不适用于新网站,因为你必须这样做 每个网站一个接一个。
  • 创建提取相同内容的模型 来自一个域中的多个网站的信息(具有 假设网络中存在某种内在的规律性 设计人员会显示相应的属性,比如zip、phone或其他任何东西)。在这种情况下,您应该创建一些特性(使用ML方法并让IE算法“理解页面内容”)。最常见的特性是:DOM路径、要提取的值(属性)的格式、布局(如粗体、斜体等)和周围的上下文单词。您可以标记一些值(根据域的不同,您至少需要100-300页才能以某种合理的质量进行标记)。然后在标签页上训练一个模型。还有一种替代方法-在无监督的情况下(利用跨页面的信息规则性思想)进行IE。在这种情况下,你/你的算法试图在页面上找到重复的模式(不加标签),并认为那些是最常见的模式是有效的。

总的来说,最具挑战性的部分是使用DOM树并生成正确的特性。同样,以正确的方式标记数据也是一项乏味的任务。对于ML模型-查看CRF、2DCRF、半马尔可夫CRF。

最后,在一般情况下,这是IE研究中的一个前沿,而不是几个晚上就能完成的一个技巧。

另外,我认为NLTK不会很有帮助-它是一个NLP,而不是Web IE库。

相关问题 更多 >