Synonym & Antonym Ersatz
Ersetzen von Wörtern durch gebräuchliche Synonyme
Während der Arbeit mit NLP, insbesondere bei der Frequenzanalyse und Textindizierung, ist es immer vorteilhaft, das Vokabular zu komprimieren, ohne an Bedeutung zu verlieren, da dadurch viel Speicherplatz gespart wird. Um dies zu erreichen, müssen wir die Zuordnung eines Wortes zu seinen Synonymen definieren. Im folgenden Beispiel erstellen wir eine Klasse mit dem Namenword_syn_replacer die verwendet werden können, um die Wörter durch ihre gemeinsamen Synonyme zu ersetzen.
Beispiel
Importieren Sie zunächst das erforderliche Paket re mit regulären Ausdrücken arbeiten.
import re
from nltk.corpus import wordnet
Erstellen Sie als Nächstes die Klasse, für die eine Wortersetzungszuordnung erforderlich ist.
class word_syn_replacer(object):
def __init__(self, word_map):
self.word_map = word_map
def replace(self, word):
return self.word_map.get(word, word)
Speichern Sie dieses Python-Programm (z. B. replacesyn.py) und führen Sie es an der Python-Eingabeaufforderung aus. Nach dem Ausführen importierenword_syn_replacerKlasse, wenn Sie Wörter durch gebräuchliche Synonyme ersetzen möchten. Mal sehen wie.
from replacesyn import word_syn_replacer
rep_syn = word_syn_replacer ({‘bday’: ‘birthday’)
rep_syn.replace(‘bday’)
Ausgabe
'birthday'
Vollständiges Implementierungsbeispiel
import re
from nltk.corpus import wordnet
class word_syn_replacer(object):
def __init__(self, word_map):
self.word_map = word_map
def replace(self, word):
return self.word_map.get(word, word)
Nachdem Sie das obige Programm gespeichert und ausgeführt haben, können Sie die Klasse importieren und wie folgt verwenden:
from replacesyn import word_syn_replacer
rep_syn = word_syn_replacer ({‘bday’: ‘birthday’)
rep_syn.replace(‘bday’)
Ausgabe
'birthday'
Der Nachteil der obigen Methode ist, dass wir die Synonyme in einem Python-Wörterbuch fest codieren müssen. Wir haben zwei bessere Alternativen in Form von CSV- und YAML-Dateien. Wir können unser Synonymvokabular in jeder der oben genannten Dateien speichern und konstruierenword_mapWörterbuch von ihnen. Lassen Sie uns das Konzept anhand von Beispielen verstehen.
CSV-Datei verwenden
Um die CSV-Datei für diesen Zweck verwenden zu können, sollte die Datei zwei Spalten haben, wobei die erste Spalte aus einem Wort und die zweite Spalte aus den Synonymen besteht, die sie ersetzen sollen. Speichern wir diese Datei alssyn.csv. Im folgenden Beispiel erstellen wir eine Klasse mit dem Namen CSVword_syn_replacer das wird sich ausdehnen word_syn_replacer im replacesyn.py Datei und wird verwendet, um die zu erstellen word_map Wörterbuch von syn.csv Datei.
Beispiel
Importieren Sie zunächst die erforderlichen Pakete.
import csv
Erstellen Sie als Nächstes die Klasse, für die eine Wortersetzungszuordnung erforderlich ist.
class CSVword_syn_replacer(word_syn_replacer):
def __init__(self, fname):
word_map = {}
for line in csv.reader(open(fname)):
word, syn = line
word_map[word] = syn
super(Csvword_syn_replacer, self).__init__(word_map)
Nach dem Ausführen importieren CSVword_syn_replacerKlasse, wenn Sie Wörter durch gebräuchliche Synonyme ersetzen möchten. Mal sehen wie?
from replacesyn import CSVword_syn_replacer
rep_syn = CSVword_syn_replacer (‘syn.csv’)
rep_syn.replace(‘bday’)
Ausgabe
'birthday'
Vollständiges Implementierungsbeispiel
import csv
class CSVword_syn_replacer(word_syn_replacer):
def __init__(self, fname):
word_map = {}
for line in csv.reader(open(fname)):
word, syn = line
word_map[word] = syn
super(Csvword_syn_replacer, self).__init__(word_map)
Nachdem Sie das obige Programm gespeichert und ausgeführt haben, können Sie die Klasse importieren und wie folgt verwenden:
from replacesyn import CSVword_syn_replacer
rep_syn = CSVword_syn_replacer (‘syn.csv’)
rep_syn.replace(‘bday’)
Ausgabe
'birthday'
Verwenden der YAML-Datei
Da wir eine CSV-Datei verwendet haben, können wir zu diesem Zweck auch eine YAML-Datei verwenden (PyYAML muss installiert sein). Speichern wir die Datei untersyn.yaml. Im folgenden Beispiel erstellen wir eine Klasse mit dem Namen YAMLword_syn_replacer das wird sich ausdehnen word_syn_replacer im replacesyn.py Datei und wird verwendet, um die zu erstellen word_map Wörterbuch von syn.yaml Datei.
Beispiel
Importieren Sie zunächst die erforderlichen Pakete.
import yaml
Erstellen Sie als Nächstes die Klasse, für die eine Wortersetzungszuordnung erforderlich ist.
class YAMLword_syn_replacer(word_syn_replacer):
def __init__(self, fname):
word_map = yaml.load(open(fname))
super(YamlWordReplacer, self).__init__(word_map)
Nach dem Ausführen importieren YAMLword_syn_replacerKlasse, wenn Sie Wörter durch gebräuchliche Synonyme ersetzen möchten. Mal sehen wie?
from replacesyn import YAMLword_syn_replacer
rep_syn = YAMLword_syn_replacer (‘syn.yaml’)
rep_syn.replace(‘bday’)
Ausgabe
'birthday'
Vollständiges Implementierungsbeispiel
import yaml
class YAMLword_syn_replacer(word_syn_replacer):
def __init__(self, fname):
word_map = yaml.load(open(fname))
super(YamlWordReplacer, self).__init__(word_map)
Nachdem Sie das obige Programm gespeichert und ausgeführt haben, können Sie die Klasse importieren und wie folgt verwenden:
from replacesyn import YAMLword_syn_replacer
rep_syn = YAMLword_syn_replacer (‘syn.yaml’)
rep_syn.replace(‘bday’)
Ausgabe
'birthday'
Antonym Ersatz
Wie wir wissen, ist ein Antonyme ein Wort, das die entgegengesetzte Bedeutung eines anderen Wortes hat, und das Gegenteil von Synonymersatz wird Antonymenersatz genannt. In diesem Abschnitt beschäftigen wir uns mit dem Ersetzen von Antonyme, dh dem Ersetzen von Wörtern durch eindeutige Antonyme mithilfe von WordNet. Im folgenden Beispiel erstellen wir eine Klasse mit dem Namenword_antonym_replacer die zwei Methoden haben, eine zum Ersetzen des Wortes und eine zum Entfernen der Negationen.
Beispiel
Importieren Sie zunächst die erforderlichen Pakete.
from nltk.corpus import wordnet
Erstellen Sie als Nächstes die benannte Klasse word_antonym_replacer - -
class word_antonym_replacer(object):
def replace(self, word, pos=None):
antonyms = set()
for syn in wordnet.synsets(word, pos=pos):
for lemma in syn.lemmas():
for antonym in lemma.antonyms():
antonyms.add(antonym.name())
if len(antonyms) == 1:
return antonyms.pop()
else:
return None
def replace_negations(self, sent):
i, l = 0, len(sent)
words = []
while i < l:
word = sent[i]
if word == 'not' and i+1 < l:
ant = self.replace(sent[i+1])
if ant:
words.append(ant)
i += 2
continue
words.append(word)
i += 1
return words
Speichern Sie dieses Python-Programm (z. B. replaceeantonym.py) und führen Sie es an der Python-Eingabeaufforderung aus. Nach dem Ausführen importierenword_antonym_replacerKlasse, wenn Sie Wörter durch ihre eindeutigen Antonyme ersetzen möchten. Mal sehen wie.
from replacerantonym import word_antonym_replacer
rep_antonym = word_antonym_replacer ()
rep_antonym.replace(‘uglify’)
Ausgabe
['beautify'']
sentence = ["Let us", 'not', 'uglify', 'our', 'country']
rep_antonym.replace _negations(sentence)
Ausgabe
["Let us", 'beautify', 'our', 'country']
Vollständiges Implementierungsbeispiel
nltk.corpus import wordnet
class word_antonym_replacer(object):
def replace(self, word, pos=None):
antonyms = set()
for syn in wordnet.synsets(word, pos=pos):
for lemma in syn.lemmas():
for antonym in lemma.antonyms():
antonyms.add(antonym.name())
if len(antonyms) == 1:
return antonyms.pop()
else:
return None
def replace_negations(self, sent):
i, l = 0, len(sent)
words = []
while i < l:
word = sent[i]
if word == 'not' and i+1 < l:
ant = self.replace(sent[i+1])
if ant:
words.append(ant)
i += 2
continue
words.append(word)
i += 1
return words
Nachdem Sie das obige Programm gespeichert und ausgeführt haben, können Sie die Klasse importieren und wie folgt verwenden:
from replacerantonym import word_antonym_replacer
rep_antonym = word_antonym_replacer ()
rep_antonym.replace(‘uglify’)
sentence = ["Let us", 'not', 'uglify', 'our', 'country']
rep_antonym.replace _negations(sentence)
Ausgabe
["Let us", 'beautify', 'our', 'country']