官术网_书友最值得收藏!

Word Sense Disambiguation

There's a popular saying: "A man is known by the company he keeps.'' Similarly, a word's meaning depends on its association with other words in a sentence. This means two or more words with the same spelling may have different meanings in different contexts. This often leads to ambiguity. Word sense disambiguation is the process of mapping a word to the sense that it should carry. We need to disambiguate words based on the sense they carry so that they can be treated as different entities when being analyzed. The following figure displays a perfect example of how ambiguity is caused due to the usage of the same word in different sentences:

Figure 1.3: Word sense disambiguation

One of the algorithms to solve word sense disambiguation is the Lesk algorithm. It has a huge corpus in the background (generally WordNet is used) that contains definitions of all the possible synonyms of all the possible words in a language. Then it takes a word and the context as input and finds a match between the context and all the definitions of the word. The meaning with the highest number of matches with the context of the word will be returned.

For example, suppose we have a sentence such as "We play only soccer" in a given text. Now, we need to find the meaning of the word "play" in this sentence. In the Lesk algorithm, each word with ambiguous meaning is saved in background synsets. In this case, the word "play" will be saved with all possible definitions. Let's say we have two definitions of the word "play":

  1. Play: Participating in a sport or game
  2. Play: Using a musical instrument

Then, we will find the similarity between the context of the word "play" in the text and both of the preceding definitions using text similarity techniques. The definition best suited to the context of "play" in the sentence will be considered the meaning or definition of the word. In this case, we will find that our first definition fits best in context, as the words "sport" and "game" are present in the preceding sentences.

In the next exercise, we will be using the Lesk module from NLTK. It takes a sentence and the word as input, and returns the meaning or definition of the word. The output of the Lesk method is synset, which contains the ID of the matched definition. These IDs can be matched with their definitions using the definition() method of wsd.synset('word').

To get a better understanding of this process, let's look at an exercise.

Exercise 1.10: Word Sense Disambiguation

In this exercise, we will find the sense of the word "bank" in two different sentences. Follow these steps to implement this exercise:

  1. Open a Jupyter Notebook.
  2. Insert a new cell and add the following code to import the necessary libraries:

    import nltk

    nltk.download('wordnet')

    from nltk.wsd import lesk

    from nltk import word_tokenize

  3. Declare two variables, sentence1 and sentence2, and assign them with appropriate strings. Insert a new cell and the following code to implement this:

    sentence1 = "Keep your savings in the bank"

    sentence2 = "It's so risky to drive over the banks of the road"

  4. To find the sense of the word "bank" in the preceding two sentences, use the Lesk algorithm provided by the nltk.wsd library. Insert a new cell and add the following code to implement this:

    def get_synset(sentence, word):

        return lesk(word_tokenize(sentence), word)

    get_synset(sentence1,'bank')

    This code generates the following output:

    Synset('savings_bank.n.02')

  5. Here, savings_bank.n.02 refers to a container for keeping money safely at home. To check the other sense of the word "bank," write the following code:

    get_synset(sentence2,'bank')

    This code generates the following output:

    Synset('bank.v.07')

    Here, bank.v.07 refers to a slope in the turn of a road.

    Thus, with the help of the Lesk algorithm, we were able to identify the sense of a word in whatever context.

    Note

    To access the source code for this specific section, please refer to https://packt.live/399JCq5.

    You can also run this example online at https://packt.live/30haCQ6.

In the next section, we will focus on sentence boundary detection, which helps detect the start and end points of sentences.

主站蜘蛛池模板: 文山县| 陆良县| 庆元县| 且末县| 彭水| 大田县| 兖州市| 高阳县| 南皮县| 连城县| 南宁市| 嘉鱼县| 沅陵县| 安陆市| 洪湖市| 全南县| 新民市| 稷山县| 会理县| 石城县| 九江县| 盐源县| 安义县| 房山区| 纳雍县| 富锦市| 南昌县| 陆良县| 盘山县| 璧山县| 塘沽区| 武城县| 新营市| 湖南省| 库车县| 延吉市| 大冶市| 偏关县| 滕州市| 资溪县| 江油市|