मैं एक सप्ताह के लिए संबंध निष्कर्षण के साथ काम कर रहा हूं। लेकिन मुझे दो संस्थाओं के बीच दिशा की आवश्यकता है, जैसे कि Company_x को Company_y द्वारा खरीदा गया। तो मॉडल को Company_y->खरीदा-> Company_X जैसी संस्थाओं की भविष्यवाणी करनी चाहिए। आपके विचार से कोई मॉडल इसके लिए सहायक होगा?

1
abhinayak 22 अक्टूबर 2018, 09:18

1 उत्तर

सबसे बढ़िया उत्तर

निष्क्रिय आवाज आमतौर पर रिश्ते की दिशा का एक अच्छा संकेतक है।

आप दो संस्थाओं के बीच के संदर्भ से, एक पैटर्न निकाल सकते हैं जो एक क्रिया से शुरू होता है, और फिर निष्क्रिय आवाज की उपस्थिति या अनुपस्थिति का पता लगाता है।

कुछ सरल प्रूफ-ऑफ-कॉन्सेप्ट कोड (यह वास्तव में NLTK से RegexpParser का उपयोग करके अधिक सरल हो सकता है)

from nltk import pos_tag
from nltk import word_tokenize
from nltk.stem.wordnet import WordNetLemmatizer

lmtzr = WordNetLemmatizer()
aux_verbs = ['be']

def detect_passive_voice(pattern):
    passive_voice = False

    if len(pattern) >= 3:
        if pattern[0][1].startswith('V'):
            verb = lmtzr.lemmatize(pattern[0][0], 'v')
            if verb in aux_verbs:
                if (pattern[1][1] == 'VBN' or pattern[1][1] == 'VBD') and pattern[-1][0] == 'by':
                    passive_voice = True

            # past verb + by
            elif (pattern[-2][1] == 'VBN' or pattern[-2][1] == 'VBD') and pattern[-1][0] == 'by':
                passive_voice = True

        # past verb + by
        elif (pattern[-2][1] == 'VBN' or pattern[-2][1] == 'VBD') and pattern[-1][0] == 'by':
                passive_voice = True

    # past verb + by
    elif len(pattern) >= 2:
        if (pattern[-2][1] == 'VBN' or pattern[-2][1] == 'VBD') and pattern[-1][0] == 'by':
            passive_voice = True

return passive_voice

कुछ उदाहरण चल रहा है:

In [4]: tokens = word_tokenize("was bought by")
   ...: tags = pos_tag(tokens)
   ...: detect_passive_voice(tags)
Out[4]: True

In [5]: tokens = word_tokenize("mailed the letter")
   ...: tags = pos_tag(tokens)
   ...: detect_passive_voice(tags)
Out[5]: False

In [7]: tokens = word_tokenize("was mailed by")
   ...: tags = pos_tag(tokens)
   ...: detect_passive_voice(tags)
Out[7]: True

आप अधिक सहायक क्रियाओं को जोड़ सकते हैं और बीच में क्रियाविशेषण या विशेषण के अस्तित्व की अनुमति भी दे सकते हैं।

0
David Batista 23 अक्टूबर 2018, 21:38