2016-07-13 10 views
1

Angesichts einer Liste der vollständigen Namen (Vorname + Nachname), wie finden Sie die Häufigkeit, dass die Namen in einem Text Artikel kommen?Vergleichen Sie zwei Wörter (vollständiger Name) zu einem Artikel Text in Python

Ich versuche eine effiziente Möglichkeit zu finden, den 'Vornamen' und 'Nachnamen' einer Person mit einem Textkörper zu vergleichen. In dieser Situation ist der Text ein Nachrichtenartikel und die Namen stammen von australischen Politikern.

Die Herausforderung besteht darin, den Nachrichtenartikel in einzelne Wörter aufzuteilen und dann den Vornamen & & Nachnamen mit den Wörtern im Artikel zu vergleichen. Ich habe daran gedacht, die Namen in eine JSON-Zeichenkette umzuwandeln, aber ich denke, das wäre ineffizient und würde dem effizienten Lernen entgegenstehen. Ich habe mit der Aufzählungsfunktion gespielt, ohne Glück. Die folgende Funktion funktioniert, wenn die Nachnamen aus "politicianName.txt" entfernt werden, aber nicht mit den Vornamen und Nachnamen funktionieren.

def getNames(articletext): 
    politicianName = open("politicianName.txt").read().split('\n') 
    #for name in politicianName: #test the names read from file 
    # print name 
    wordList = articletext.split() 
    for word in wordList: 
     if word in politicianName and word.isalnum(): 
      print word 

article = 'Jacinta Allan this is an articletext scraped with urllib2' 
getNames(article) 



''' 
#The enumerate example I have been testing and playing around with 
mylist = [1, 6, 6, 4, 2, 3] 
for i, j in enumerate(mylist[:-1]): 
    if j == mylist[i+1]: 
     mylist[i] = "foo" 
     mylist[i+1] = "foo" 
print mylist 
''' 

politicianName.txt (kurz)

Jacinta Allan 
Daniel Andrews 
Neil Angus 
Louise Asher 
Brad Battin 
+0

Häufigkeit des Namens, um Wörter oder die Häufigkeit der Namen relativ zueinander ? –

+1

Der effizienteste Weg hängt von der Relation der Menge des zu suchenden Textes und der Anzahl der zu suchenden Namen ab. Ich würde empfehlen, über die Namen zu iterieren, einen regulären Ausdruck für jeden zu erzeugen und finder zu zählen() – sphere

+0

Das Hinzufügen des Vornamens macht nur Dinge kompliziert. Ein Politiker würde niemals ohne den Nachnamen im Text erwähnt werden. Ich kann mir nicht vorstellen zu lesen "Jacinta hat eine Rechnung übergeben ...". Mein Punkt ist, suche nur nach dem Nachnamen. –

Antwort

0

versuchen Sie dies:

[x for x in politicianName if x in article and x is not''] 

Eingang:

politicianName = open("politicianName.txt").read().split('\n') 
article = 'Jacinta Allan this is an articletext scraped with urllib2' 

heraus gesetzt:

['Jacinta Allan'] 
0

Wie wäre es, es einfach zu teilen?

politicianName = [v for i in open("politicianName.txt").read().split('\n') for v in i.split()]

Und dann versuchen Sie folgendes

article = 'Jacinta Allan this is an articletext scraped with urllib2' 
getNames(article) 

article = 'Allan, Jacinta passed a bill' 
getNames(article) 

1. Ausgang: Jacinta Allan 2. Ausgabe: Jacinta