- The Natural Language Processing Workshop
- Rohan Chopra Aniruddha M. Godbole Nipun Sadvilkar Muzaffar Bashir Shah Sohom Ghosh Dwight Gunning
- 693字
- 2021-06-11 18:39:23
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":
- Play: Participating in a sport or game
- 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:
- Open a Jupyter Notebook.
- 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
- 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"
- 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')
- 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.
- Python絕技:運用Python成為頂級數據工程師
- 新型數據庫系統:原理、架構與實踐
- Dependency Injection with AngularJS
- 數據庫技術及應用教程
- 數據庫技術實用教程
- 白話大數據與機器學習
- Python金融數據分析(原書第2版)
- Proxmox VE超融合集群實踐真傳
- Apache Kylin權威指南
- Instant Autodesk AutoCAD 2014 Customization with .NET
- Google Cloud Platform for Developers
- 大數據數學基礎(Python語言描述)
- Learning Ansible
- 數據迷霧:洞察數據的價值與內涵
- 社交網站的數據挖掘與分析(原書第2版)