ଷ୍ଟେମିଂ

ଉଇକିପିଡ଼ିଆ ରୁ
Jump to navigation Jump to search

ବ୍ୟାକରଣ ଯୋଗୁଁ ଗୋଟିଏ ଶବ୍ଦ ଭିନ୍ନ ଭିନ୍ନ ବାକ୍ୟରେ ଭିନ୍ନ ଭିନ୍ନ ରୂପରେ ଦେଖିବାକୁ ମିଳିଥାଏ ।[୧] ଯେପରିକି 'ଆସୁଛନ୍ତି', 'ଆସିଲେ', 'ଆସିବେ' ଇତ୍ୟାଦି ଗୋଟିଏ ମୂଳଶବ୍ଦ, ଆସକୁ ବୁଝାଇଥାଏ । ଏକ ଲେଖାରେ ଖୋଜିଲାବେଳେ ଗୋଟିଏ ଶବ୍ଦ ଖୋଜିଲାବେଳେ ତାହାର ଏହି ଭଳି ଅନେକ ଉଧୃତ ଶବ୍ଦ ମିଳିପାରିଲେ ତାହା ଖୋଜିବାର ସମୟ ଏବଂ ଜାଗା କମାଇଦେଇଥାଏ । ନ୍ୟାଚୁରାଲ ଲାଙ୍ଗୁଏଜ ପ୍ରୋସେସିଂ ବା ଭାଷା ପ୍ରକ୍ରିୟାକରଣରେ ଗୋଟିଏ ଶବ୍ଦକୁ ତାହାର ସଂକ୍ଷିପ୍ତ ବା ମୂଳରୂପକୁ ଫେରାଇ ଆଣିବାକୁ ଷ୍ଟେମିଂ କୁହାଯାଇଥାଏ । ଯେଉଁ ଆଲଗୋରିଦମ ଏହି କାମ କରିଥାଏ ତାକୁ ଷ୍ଟେମର କୁହାଯାଇଥାଏ । ୧୯୬୦ ମସିହାରୁ ଷ୍ଟେମିଂର ଆଲଗୋରିଦମ ଉପରେ ଗବେଷଣା ଚାଲୁଅଛି । ଅଧିକାଂଶ କ୍ଷେତ୍ରରେ ଏହା କହିହେବ ନାହିଁ କି ଷ୍ଟେମିଂ ଶବ୍ଦଟି ସମ୍ପୂର୍ଣରୂପେ ଶବ୍ଦଟିର ମୂଳରୂପକୁ ନେଇଆସିବ ।

ଇତିହାସ[ସମ୍ପାଦନା]

ଜୁଲିଆ ବେଥ ଲଭିନ୍ସ ନାମକ ଜଣେ ବ୍ୟକ୍ତି ୧୯୬୮ ମସିହାରେ ପ୍ରଥମେ ଏହା ବିଷୟରେ ଲେଖିଥିଲେ । ସେହି ସମୟରେ ଏହା ଭାଷାବିତ୍ ମାନଙ୍କ ମଧ୍ୟରେ ବହୁତ ଚହଳ ପକେଇଦେଇଥିଲା । କିଛି ବର୍ଷପରେ ୧୯୮୦ରେ ମାର୍ଟିନ ପୋର୍ଟର, ବର୍ତ୍ତମାନ ପର୍ଯ୍ୟନ୍ତ ପ୍ରଚଳିତ ପ୍ରସିଦ୍ଧ ପୋର୍ଟର ଷ୍ଟେମର ବାହାର କରିଥିଲେ । ୨୦୦୦ ମସିହାରେ ସେ ଏହାର ଏକ ପ୍ରୋଗ୍ରାମ ସର୍ବ ସାଧାରଣଙ୍କ ନିମିତ୍ତ ପ୍ରକାଶ କରିଥିଲେ । କିଛି ବର୍ଷପରେ ସେ ତାଙ୍କର କାମକୁ ସ୍ନୋ-ବଲ ଷ୍ଟେମରଦ୍ୱାରା ଆହୁରି ଭଲ କରିଥିଲେ ।[୨]

ଆଲଗୋରିଦମ[ସମ୍ପାଦନା]

ଷ୍ଟେମିଂ ନିମିତ୍ତ ବିଭିନ୍ନ ଆଲଗୋରିଦମ ଅଛି ସେମାନଙ୍କ ମଧ୍ୟରୁ କିଛି ନିମ୍ନରେ ପ୍ରଦାନ କରାହେଲା ।

ପ୍ରଡକ୍ସନ ଶୈଳୀ[ସମ୍ପାଦନା]

ଏହି ଶୈଳୀରେ ଷ୍ଟେମର ଏକ ଶବ୍ଦ ଟେବୁଲ ବ୍ୟବହାର କରିଥାଏ । ଧରନ୍ତୁ ଗୋଟିଏ ଶବ୍ଦ ଆସିଲା, ଦୌଡ଼ ଏହା ଟେବୁଲଟିକୁ ଯାଇ ଅନ୍ୟ ସମ୍ପର୍କିତ ଶବ୍ଦଗୁଡ଼ିକ ଯଥା ଦୌଡ଼ିବା, ଦୌଡୁଛି , ଦୌଡିବା , ଦୌଡିବ , ଇତ୍ୟାଦି ମଧ୍ୟ ନଜରକୁ ନେଇଥାଏ । ଅର୍ଥାତ ଏହି ଶବ୍ଦମାନଙ୍କ ମଧ୍ୟରୁ କେହି ଗୋଟିଏ ଶବ୍ଦ ଯଦି ଲେଖାରେ ମିଳେ ତେବେ ଅନ୍ୟ ସବୁ ଶବ୍ଦ ମଧ୍ୟ ଲେଖାଟିରେ ଅଛି ବୋଲି ଧରାଯିବ ।

ସଫିକ୍ସ ଲିଭେଇଦେବା ଶୈଳୀ[ସମ୍ପାଦନା]

ସଫିକ୍ସ ଅର୍ଥାତ ଶେଷ ଅକ୍ଷର(ଗୁଡ଼ିକ)କୁ ବାଦ ଦିଆଯାଇ ଶବ୍ଦର ମୂଳ ରୂପକୁ ଅଣାଯାଇପାରେ । ଓଡ଼ିଆରେ ଅନେକ ଶବ୍ଦ ଅଛି ଯେଉଁଥିରେ ବହୁଳ ମାତ୍ରାରେ ଏହି ଶେଷ ଅକ୍ଷର ଯୋଡ଼ା ହୋଇଥାଏ । ସେଭଳି କେତକ ସଫିକ୍ସ ନିମ୍ନରେ ଦିଆହେଲା ।

ସାଧାରଣ ଶେଷ ଅକ୍ଷର ବା ସଫିକ୍ସ
ସଫିକ୍ସ ବ୍ୟବହୃତ କିଛି ଶବ୍ଦ ସଫିକ୍ସ କାଢ଼ିଲାପରେ ହେଉଥିବା ଶବ୍ଦ
ଇଛି ହୋଇଛି, ଯାଇଛି, ପାଇଛି, ଶୋଇଛି ହୋ, ଯା, ପା, ଶୋ
ଉଛୁ ଶୁଣୁଛୁ, ଶୋଉଛୁ, ପାଉଛୁ, ପଳଉଛୁ ଶୁଣ, ଶୋ, ପା, ପଳ
ଇବା ଶୁଣିବା, ଶୋଇବା, ପାଇବା, ପାଳିବା ଶୁଣ, ଶୋ, ପା, ପାଳ

ଲେମାଟାଇଜେସନ ଉପାୟ[ସମ୍ପାଦନା]

ସାଧାରଣତଃ ଷ୍ଟେମିଂର ଉନ୍ନତ ରୁପକୁ ଲେମାଟାଇଜେସନ କୁହାଯାଇଥାଏ, ଏଠାରେ ଶବ୍ଦକୁ ଗୋଟିଏ ପରେ ଗୋଟେ ପ୍ରକ୍ରିୟା ନକରି ପୁରାପୁରି ବାକ୍ୟଟିକୁ ବିଚାରକୁ ନିଆଯାଇଥାଏ, ସେହି ବାକ୍ୟରୁ ପ୍ରତି ଶବ୍ଦର ପଦ ପ୍ରକରଣ ବା ପାର୍ଟ ଅଫ ସ୍ପିଚ ଦ୍ୱାରା ବିଭିନ୍ନ କିସମର ମୂଳରୂପାକୁ ଫେରାଇ ଆଣିବା ପ୍ରକ୍ରିୟା ପ୍ରୟୋଗ କରାଯାଇଥାଏ ।

ଷ୍ଟକାସ୍ଟିକ ଉପାୟ[ସମ୍ପାଦନା]

ଏନ-ଗ୍ରାମ ପ୍ରକ୍ରିୟା[ସମ୍ପାଦନା]

ଆଫିକ୍ସ ଷ୍ଟେମର[ସମ୍ପାଦନା]

ଯୋଡ଼ୁଥିବା ଉପାୟ[ସମ୍ପାଦନା]

ଭାଷା ସମସ୍ୟା[ସମ୍ପାଦନା]

ଓଡ଼ିଆ ଭାଷାରେ ସେଭଳି କିଛି ଭଲ ଷ୍ଟେମର ବାହାରିବାକୁ ନାହିଁ ।

ଉଦାହରଣ[ସମ୍ପାଦନା]

ନିମ୍ନରେ ଏକ ନିୟମ ଉପରେ ପର୍ଯ୍ୟବେଷିତ ପ୍ରୋଗ୍ରାମିଂ ଉଦାହରଣ ଦିଆଗଲା ।

 1 import re # ରେଗୁଲାର ଏକ୍ସପ୍ରେସନ 
 2 from nltk.tokenize import word_tokenize # ଟୋକେନାଇଜେସନ ନିମିତ୍ତ 
 3 
 4 # ନିମ୍ନଲିଖିତ ବାକ୍ୟଟିକୁ ଆମେ ଷ୍ଟେମିଂ କରିବା 
 5 text = "ଗାଈଆଳ ପିଲାମାନେ ଗାଈଗୁଡ଼ିକୁ ଚରାଉଛନ୍ତି"
 6 
 7 # ନିମ୍ନଲିଖିତ ଶବ୍ଦଗୁଡ଼ିକ ମୁଖ୍ୟତଃ ଓଡ଼ିଆରେ ବହୁବଚନ ରୂପେ ବ୍ୟବହୃତ ହୁଏ , ସେଗୁଡିକୁ ଆମେ ବାହାର କରିବା 
 8 plural_suffix = sorted(["ମାନେ", "ମାନ", "ମାନଙ୍କୁ", "ଗୁଡ଼ିକ", "ଗୁଡିକ", "ଗୁଡିକ",
 9                         "ଗୁଡ଼ିକୁ", "ଟା", "ଟି", "ଗୋଟି", "ଟିଏ", "ଗୁଡ଼ାକ", "ଗୁଡାକ", 
10                         "ଏ", "ଗଣ", "ପଲ", "ଗୁଡ଼ାଏ", "ଗୁଡାଏ", "ସବୁ", "ାଉଛନ୍ତି"])
11 # ଛାଞ୍ଚ ପ୍ରସ୍ତୁତ ହେଲା 
12 plural_suffix_pattern = re.compile("$|".join(plural_suffix) + "$")
13 
14 # ମୁଖ୍ୟ ଫଙ୍କସନ
15 def stemm(token_list):
16     new_token_list = []
17     for token in token_list:
18         new_token = re.sub(plural_suffix_pattern, '', token)
19         # କିଛି ଶବ୍ଦ ବହୁ କାମ ଅକ୍ଷରବିଶିଷ୍ଟ ହୋଇଥାଏ , 
20         # ତାହା ଉପରେ ଷ୍ଟେମିଂ କଲେ ବାକ୍ୟଟିର ଅର୍ଥ ପରିବର୍ତ୍ତନ ହେବାର ଆଶଙ୍କା ଥାଏ 
21         new_token = token if len(new_token) < 2 else new_token
22         new_token_list.append(new_token)
23     return new_token_list
24 
25 print(stemm(word_tokenize(text)))
26 # output
27 ['ଗାଈଆଳ', 'ପିଲା', 'ଗାଈ', 'ଚର']

ଉପରୋକ୍ତ ଉଦାହରଣରେ ବହୁ କମ ଶବ୍ଦ ଉପଯୋଗ କରି ଏକ ଷ୍ଟେମର ଗଠନ ହୋଇଛି, ମାତ୍ର ଓଡ଼ିଆରେ ଆହୁରି ଅନେକ ଶବ୍ଦ ଅଛି ଯାହାକୁ ଷ୍ଟେମିଂ କରିବା ନିମିତ୍ତ ଅଧିକ ଶବ୍ଦର ଆବଶ୍ୟକ ପଡ଼େ ।

ଆହୁରି ଦେଖନ୍ତୁ[ସମ୍ପାଦନା]

ଆଧାର[ସମ୍ପାଦନା]

  1. https://nlp.stanford.edu/IR-book/html/htmledition/stemming-and-lemmatization-1.html
  2. http://blog.chapagain.com.np/python-nltk-stemming-lemmatization-natural-language-processing-nlp/