我想在Python中从网页中提取特定类型的信息。让我们说邮政地址。它有数千种形式,但仍然可以辨认出来。由于存在大量表单,可能很难编写正则表达式甚至是语法之类的内容并使用解析器生成器用于解析它。
所以我认为我应该采用的方式是机器学习。如果我理解得很好,我应该能够制作一个数据样本,在那里我将指出应该是什么结果,然后我有一些东西可以从中学习如何自己识别结果。这就是我对机器学习的全部了解。也许我可以使用一些自然语言处理,但可能并不多,因为所有的图书馆都使用英语,我需要这个用于捷克语。
问题:
更新
正如你们所提到的,我应该展示一些我试图脱离网络的数据,这是一个例子。我对电影 showtimes 感兴趣。它们看起来像这样(其中三个):
<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 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>
或者它看起来像任何类似的东西。 HTML标记中没有特殊规则,没有特殊规则等等。
答案 0 :(得分:51)
首先,您的任务适合研究的信息提取领域。这项任务主要有两个复杂程度:
整体上最具挑战性的部分是使用DOM树并生成正确的功能。以正确的方式进行数据标记也是一项繁琐的工作。对于ML模型 - 看看 CRF,2DCRF,半马尔可夫CRF 。
最后,在一般情况下,这是IE研究领域的一个前沿,而不是一个黑客,你可以在几个晚上做到这一点。
P.S。我认为NLTK不会很有用 - 它是一个NLP,而不是Web-IE库。
答案 1 :(得分:7)
至于自然语言处理,如果你正在使用python,你应该绝对检查梦幻般的(恕我直言,不隶属于他们)Natural Language Toolkit,它有许多算法的实现,其中许多是语言无关的(比如,n-gram)。
对于python中的机器学习库的推荐,我会说它取决于你想要使用的技术but opencv implements some common algorithms。机器学习是一个非常广阔的领域。只是为了监督学习分类子问题,有朴素贝叶斯,KNN,决策树,支持向量机,至少十几种不同类型的神经网络......这个列表一直在继续。这就是为什么,正如你所说,一般来说,机器学习没有“快速入门”或教程。我的建议首先是理解基本的ML术语,其次,理解子问题(我建议监督学习分类),第三,研究解决这个子问题的简单算法(KNN依赖于高中数学)。
特别是关于你的问题:你似乎想要在巨大的数据集(文本)中检测到一条数据(邮政编码)的存在,这就是AFAIK,而不是ML处理的问题类型。分类算法需要相对较小的feature vector。要获得这一点,您需要执行所谓的dimensionality reduction:这意味着,将外观的部分与潜在的邮政编码隔离开来。只有这样,分类算法才会对其进行分类(例如,“邮政编码”或“非邮政编码”)。
因此,在您考虑使用ML来解决此问题之前,您需要找到一种隔离潜在匹配的方法。如果您不使用或不能使用正则表达式或解析,这肯定会涉及自然语言处理。
答案 2 :(得分:7)
请注意,有一个专门用于机器学习和统计分析的堆栈交换站点,称为Cross Validated。您更有可能在那里找到与您的问题集相关的信息。
虽然需要一些编程技能,但机器学习作为一个领域实际上是编程和数据分析的专长。它拥有自己的“语言”,并假定对矩阵运算和线性代数有基本的了解。 ML专家必须完成的大部分工作涉及将其源数据操作为算法可以使用的形式。
On Cross Validated,你会发现每天真正解决这些问题的人,但要准备深入ML兔洞。有很多东西需要学习。
答案 3 :(得分:4)
据我所知,使用机器学习方法有两种方法可以完成这项任务。
1.使用计算机视觉训练模型,然后根据您的用例提取内容,这已由diffbot.com.实施 他们没有公开解决方案。
2.解决这个问题的另一种方法是使用有监督的机器学习训练二进制分类器来对内容和样板进行分类,然后提取内容。这种方法用于dragnet. 以及该领域的其他研究。您可以在不同的内容提取技术中查看benchmark comparison。答案 4 :(得分:3)
首先,机器学习并不神奇。这些算法执行特定任务,即使这些任务有时可能有点复杂。
任何此类任务的基本方法是生成一些具有合理代表性的标签数据,以便您可以评估自己的表现。 “BOI”标签可以工作,你为每个单词分配一个标签:“O”(外面)如果它不是你正在寻找的东西,“B”(开头)如果它是一个地址的开头,并且“我”代表地址中的所有后续单词(或数字或其他)。
第二步是考虑如何评估您的成功。您发现地址的大部分内容是否重要,或者您是否还需要确切知道事物是什么(邮政编码或街道或城市等)。然后,这会改变您认为的错误。
如果您希望您的命名实体识别器能够正常运行,您必须很好地了解您的数据,并确定最适合该工作的工具。这可能是一系列正则表达式,其中包含有关如何组合结果的一些规则。我希望你能用相对简单的程序找到大部分数据。一旦你有一些简单的东西可以运作,你就可以看出误报(事实证明不是你想要的东西)和假阴性(你错过的东西),并寻找模式。如果您看到可以轻松修复的内容,请尝试一下。正则表达式的一个巨大优势是,不仅可以将某些东西识别为地址的一部分,而且还可以检测它是哪个部分。
如果你想超越它,你可能会发现许多NLP方法对你的数据表现不佳,因为“自然语言处理”通常需要看起来像(你猜对了)自然语言来识别什么东西是
或者,由于您可以将其视为分块问题,因此您可以使用最大熵马尔可夫模型。在这种情况下,它使用从一种类型的单词转换到另一种单词到块文本的概率为“地址的一部分”和“不是地址的一部分”。
祝你好运!答案 5 :(得分:2)
我建议你看一下information extraction的字段。很多人一直在研究如何做到你所要求的。有一些信息提取技术是基于机器学习的,有些技术不是基于机器学习的。
如果不查看代表您要解决的问题的示例,很难进一步评论(邮政地址在捷克的情况如何?)。
答案 6 :(得分:2)
该方法需要是一种监督学习算法(通常,它们比无监督或半监督方法产生更好的结果)。另外,请注意您需要基本上提取文本块。直观地说,你的算法需要说一句话,“从这个字符开始,对于接下来的三行,是一个邮政地址”。
我觉得接近这个的一种自然方式是单词和字符级n-gram语言模型的组合。建模本身可能非常复杂。正如mcstar所指出的,Cross Validated是了解这些细节的更好地方。
答案 7 :(得分:1)
我已经为此准备了一个解决方案。我的目标是提取与互联网上可用的竞赛相关的所有信息。我用了一个调整。 我所做的是我检测到网站上列出信息的模式。就我而言,它们在订单下面逐一列出, 我检测到使用html表标签并获得了相关的信息 比赛。
虽然它是一个很好的解决方案,但它适用于某些网站,而对于其他一些网站则相同的代码不起作用。但您只需在同一代码中更改某些参数即可使其正常工作。