def test_detect_speaker2(self): raw = """<div><p class="StandardRB" style="margin-bottom:.70em"><a name="R_41346_10"><b><span style="display:none"><!--†--></span>Abgeordneter </b></a><b><a href="/WWER/PAD_01781/">Dr. Wolfgang Schüssel</a></b> (ÖVP) <i>(zur Geschäftsbehandlung)</i><i><span style="display: none"><!--¦--></span>:</i> Ich meine, in der Sache selber haben wir das, glaube ich, zuerst schon besprochen. Es ist Sache des Präsidiums, zu entscheiden. </p> <p class="StandardRE">Nur, lieber Peter Westenthaler, das Argument halte ich für höchst bedenklich, dass man quasi jetzt einer Vielzahl von Exekutivbeamten unterstellt: Weil sie zu wenig verdienen, sind sie korruptionsgefährdet. <i>(Abg. Ing. <b>Westenthaler:</b> Es ist aber so!)</i> Das weise ich mit aller Entschiedenheit zurück, meine Damen und Herren! <i>(Beifall bei ÖVP, SPÖ und Grünen.)</i></p> <p class="RE" style="margin-bottom:1.20em">16.42</p></div>""" par = Selector(text=raw).xpath('.//p')[0] p = SECTION.get_p(par) speaker = SECTION.detect_speaker(p.plain, p.links) self.assertEqual(speaker['found'], True) self.assertEqual(speaker['id'], 'PAD_01781') self.assertEqual(speaker['role'], 'abg') self.assertTrue(speaker['cleaned'].startswith('Ich meine, in der'))
def test_detect_speaker2(self): raw = """<div><p class="StandardRB" style="margin-bottom:.70em"><a name="R_41346_10"><b><span style="display:none"><!--†--></span>Abgeordneter </b></a><b><a href="/WWER/PAD_01781/">Dr. Wolfgang Schüssel</a></b> (ÖVP) <i>(zur Geschäftsbehandlung)</i><i><span style="display: none"><!--¦--></span>:</i> Ich meine, in der Sache selber haben wir das, glaube ich, zuerst schon besprochen. Es ist Sache des Präsidiums, zu entscheiden. </p> <p class="StandardRE">Nur, lieber Peter Westenthaler, das Argument halte ich für höchst bedenklich, dass man quasi jetzt einer Vielzahl von Exekutivbeamten unterstellt: Weil sie zu wenig verdienen, sind sie korruptionsgefährdet. <i>(Abg. Ing. <b>Westenthaler:</b> Es ist aber so!)</i> Das weise ich mit aller Entschiedenheit zurück, meine Damen und Herren! <i>(Beifall bei ÖVP, SPÖ und Grünen.)</i></p> <p class="RE" style="margin-bottom:1.20em">16.42</p></div>""" par = Selector(text=raw).xpath('.//p')[0] p = SECTION.get_p(par) speaker = SECTION.detect_speaker(p.plain, p.links) self.assertEqual(speaker['found'], True) self.assertEqual(speaker['id'], 'PAD_01781') self.assertEqual(speaker['role'], 'abg') self.assertTrue(speaker['cleaned'].startswith('Ich meine, in der'))
def test_colon_inside_comment(self): # Here, the colon to delimit speaker part from speech has slipped # inside the comment raw = """<p class="MsoNormal" style="margin-top:.70em;margin-right:0cm;margin-bottom:.70em; margin-left:0cm"><b><span style="display:none"><!--†--></span>Präsidentin <a href="/WWER/PAD_08240/">Dr. Eva Glawischnig-Piesczek</a><span style="display:none"><!--¦--></span></b> <i>(das Glockenzeichen gebend):</i> Ich bitte um ein bisschen mehr Aufmerksamkeit! Danke.</p> <p class="MsoNormal" style="margin-top:.70em;margin-right:0cm;margin-bottom:.70em; margin-left:0cm"><b><span style="display:none"> </span></b></p>""" par = Selector(text=raw).xpath('.//p')[0] p = SECTION.get_p(par) speaker = SECTION.detect_speaker(p.plain, p.links) self.assertEqual(speaker['found'], True) self.assertEqual(speaker['id'], 'PAD_08240') self.assertEqual(speaker['role'], 'pres') self.assertTrue(speaker['cleaned'].startswith('Ich bitte um ein'))
def test_colon_inside_comment(self): # Here, the colon to delimit speaker part from speech has slipped # inside the comment raw = """<p class="MsoNormal" style="margin-top:.70em;margin-right:0cm;margin-bottom:.70em; margin-left:0cm"><b><span style="display:none"><!--†--></span>Präsidentin <a href="/WWER/PAD_08240/">Dr. Eva Glawischnig-Piesczek</a><span style="display:none"><!--¦--></span></b> <i>(das Glockenzeichen gebend):</i> Ich bitte um ein bisschen mehr Aufmerksamkeit! Danke.</p> <p class="MsoNormal" style="margin-top:.70em;margin-right:0cm;margin-bottom:.70em; margin-left:0cm"><b><span style="display:none"> </span></b></p>""" par = Selector(text=raw).xpath('.//p')[0] p = SECTION.get_p(par) speaker = SECTION.detect_speaker(p.plain, p.links) self.assertEqual(speaker['found'], True) self.assertEqual(speaker['id'], 'PAD_08240') self.assertEqual(speaker['role'], 'pres') self.assertTrue(speaker['cleaned'].startswith('Ich bitte um ein'))
def test_detect_speaker_minister_simple(self): abg_paragraph = u"""<p class=MsoNormal style='margin-top:.70em;margin-right:0cm;margin-bottom:.70em; margin-left:0cm'><b><span lang=DE style='display:none'><!--†--></span>Bundesminister für Land- und Forstwirtschaft, Umwelt und Wasserwirtschaft <A HREF="/WWER/PAD_83296/index.shtml">Ing. Andrä Rupprechter</A></b>: Herr <span lang=DE>Bundesminister, ich bin dir sehr dankbar, dass du aufgrund deiner Produktion in Öster­reich. – Herzlichen Dank dafür. <i>(Abg. <b>Neubauer</b> – in Richtung ÖVP, eine entsprechen­de Handbewegung andeutend –: Klatschen!)</i></span></p> """ par = Selector(text=abg_paragraph).xpath('.//p')[0] p = SECTION.get_p(par) speaker = SECTION.detect_speaker(p.plain, p.links) self.assertEqual(speaker['found'], True) self.assertEqual(speaker['id'], 'PAD_83296') self.assertEqual(speaker['role'], 'min')
def test_detect_speaker_abgeordneter(self): abg_paragraph = u"""<p class=MsoNormal style='margin-top:.70em;margin-right:0cm;margin-bottom:.70em; margin-left:0cm'><b><span lang=DE style='display:none'><!--†--></span>Abgeordneter <A HREF="/WWER/PAD_12907/index.shtml">Fritz Grillitsch</A></b> (ÖVP)<span style='display:none'><!--¦--></span>: Herr <span lang=DE>Bundesminister, ich bin dir sehr dankbar, dass du aufgrund deiner Produktion in Öster­reich. – Herzlichen Dank dafür. <i>(Abg. <b>Neubauer</b> – in Richtung ÖVP, eine entsprechen­de Handbewegung andeutend –: Klatschen!)</i></span></p> """ par = Selector(text=abg_paragraph).xpath('.//p')[0] p = SECTION.get_p(par) speaker = SECTION.detect_speaker(p.plain, p.links) self.assertEqual(speaker['found'], True) self.assertEqual(speaker['id'], 'PAD_12907') self.assertEqual(speaker['role'], 'abg')
def test_detect_speaker_minister_simple(self): abg_paragraph = u"""<p class=MsoNormal style='margin-top:.70em;margin-right:0cm;margin-bottom:.70em; margin-left:0cm'><b><span lang=DE style='display:none'><!--†--></span>Bundesminister für Land- und Forstwirtschaft, Umwelt und Wasserwirtschaft <A HREF="/WWER/PAD_83296/index.shtml">Ing. Andrä Rupprechter</A></b>: Herr <span lang=DE>Bundesminister, ich bin dir sehr dankbar, dass du aufgrund deiner Produktion in Öster­reich. – Herzlichen Dank dafür. <i>(Abg. <b>Neubauer</b> – in Richtung ÖVP, eine entsprechen­de Handbewegung andeutend –: Klatschen!)</i></span></p> """ par = Selector(text=abg_paragraph).xpath('.//p')[0] p = SECTION.get_p(par) speaker = SECTION.detect_speaker(p.plain, p.links) self.assertEqual(speaker['found'], True) self.assertEqual(speaker['id'], 'PAD_83296') self.assertEqual(speaker['role'], 'min')
def test_detect_speaker_abgeordneter(self): abg_paragraph = u"""<p class=MsoNormal style='margin-top:.70em;margin-right:0cm;margin-bottom:.70em; margin-left:0cm'><b><span lang=DE style='display:none'><!--†--></span>Abgeordneter <A HREF="/WWER/PAD_12907/index.shtml">Fritz Grillitsch</A></b> (ÖVP)<span style='display:none'><!--¦--></span>: Herr <span lang=DE>Bundesminister, ich bin dir sehr dankbar, dass du aufgrund deiner Produktion in Öster­reich. – Herzlichen Dank dafür. <i>(Abg. <b>Neubauer</b> – in Richtung ÖVP, eine entsprechen­de Handbewegung andeutend –: Klatschen!)</i></span></p> """ par = Selector(text=abg_paragraph).xpath('.//p')[0] p = SECTION.get_p(par) speaker = SECTION.detect_speaker(p.plain, p.links) self.assertEqual(speaker['found'], True) self.assertEqual(speaker['id'], 'PAD_12907') self.assertEqual(speaker['role'], 'abg')
def test_detect_speaker_minister(self): # This paragraph has invalid HTML around the speaker link, and # only part of the speaker-name+title is enclosed by the link paragraph = u"""<p class=MsoNormal><b><span lang=DE style='display:none;letter-spacing:-.2pt'><!--†--></span><span style='letter-spacing:-.2pt'>Bundesminister für Land- und Forstwirtschaft, Umwelt und Wasserwirtschaft <A HREF="/WWER/PAD_83296/index.shtml">Dipl.-</span>Ing. Andrä Rupprechter</A><span style='display:none'><!--¦--></span>:</b> Grundsätzlich ist neben dem Heimmarkt der Exportmarkt außerordentlich wichtig für die <span lang=DE>österreichische Landwirtschaft, Lebensmittelwirtschaft, weshalb wir uns gerade auch aufgrund der Russland-Krise letztes Jahr bemüht haben, zusätzliche neue Drittlandmärkte zu finden. Und das ist tatsächlich gelungen: Der agra­rische Außenhandel hat sich im Jahr 2014 trotz der sehr schwierigen Wirtschafts­bedingungen positiv entwickelt, weist immerhin ein Plus von 2,4 Prozent gegenüber 2013 auf, trotz des Wegfalls des so wichtigen Marktes in Russland.</span></p> """ par = Selector(text=paragraph).xpath('.//p')[0] p = SECTION.get_p(par) speaker = SECTION.detect_speaker(p.plain, p.links)
def test_detect_speaker_minister(self): # This paragraph has invalid HTML around the speaker link, and # only part of the speaker-name+title is enclosed by the link paragraph = u"""<p class=MsoNormal><b><span lang=DE style='display:none;letter-spacing:-.2pt'><!--†--></span><span style='letter-spacing:-.2pt'>Bundesminister für Land- und Forstwirtschaft, Umwelt und Wasserwirtschaft <A HREF="/WWER/PAD_83296/index.shtml">Dipl.-</span>Ing. Andrä Rupprechter</A><span style='display:none'><!--¦--></span>:</b> Grundsätzlich ist neben dem Heimmarkt der Exportmarkt außerordentlich wichtig für die <span lang=DE>österreichische Landwirtschaft, Lebensmittelwirtschaft, weshalb wir uns gerade auch aufgrund der Russland-Krise letztes Jahr bemüht haben, zusätzliche neue Drittlandmärkte zu finden. Und das ist tatsächlich gelungen: Der agra­rische Außenhandel hat sich im Jahr 2014 trotz der sehr schwierigen Wirtschafts­bedingungen positiv entwickelt, weist immerhin ein Plus von 2,4 Prozent gegenüber 2013 auf, trotz des Wegfalls des so wichtigen Marktes in Russland.</span></p> """ par = Selector(text=paragraph).xpath('.//p')[0] p = SECTION.get_p(par) speaker = SECTION.detect_speaker(p.plain, p.links)