আমি বাক্যগুলির মধ্যে কাঠামোগত মিলকে কীভাবে গণনা করব?


12

আমি এমন একটি সমস্যা নিয়ে কাজ করছি যেখানে আমার দুটি বাক্য সমান কিনা তা নির্ধারণ করতে হবে। আমি বিএম 25 অ্যালগরিদম এবং ওয়ার্ডনেট সিনেটস ব্যবহার করে সিনট্যাকটিক এবং শব্দার্থক মিল খুঁজে পেয়ে সমাধান প্রয়োগ করেছি। সমাধানটি পর্যাপ্তভাবে কাজ করছে, এবং বাক্যগুলিতে শব্দের ক্রমটি ঝাঁকুনির পরেও, এটি মাপা হচ্ছে যে দুটি বাক্যই সমান similar উদাহরণ স্বরূপ

  1. পাইথন একটি ভাল ভাষা।
  2. ভাষা একটি ভাল অজগর হয়।

আমার সমস্যাটি নির্ধারণ করার জন্য যে এই দুটি বাক্য একই রকম।

  • কাঠামোগত মিলের সম্ভাব্য সমাধান কী হতে পারে?
  • আমি কীভাবে বাক্যগুলির কাঠামো বজায় রাখব?

আপনি বাক্য ভেক্টরগুলি ব্যবহার করতে এবং তাদের তুলনা করতে সক্ষম হতে পারেন।
এইডেন গ্রসম্যান

আমি আপনাকে এই কাজের জন্য Gensim ( Radimrehurek.com/gensim ) ব্যবহার করার পরামর্শ দিচ্ছি । বিশেষত LSI এবং / অথবা word2vec এবং ফাস্ট টেক্সট মডেলগুলি
রবিন

উত্তর:


2

কিছু ধরণের কাঠামোগত মিলের পরিমাপ যুক্ত করার সহজ উপায় হ'ল এন-গ্রাম ব্যবহার করা; আপনার ক্ষেত্রে বিগ্রামগুলি যথেষ্ট হতে পারে।

প্রতিটি বাক্য জুড়ে যান এবং জোড়া শব্দ সংগ্রহ করুন, যেমন:

  • "পাইথন হ'ল", "একটি", "একটি ভাল", "ভাল ভাষা"।

আপনার অন্য বাক্য আছে

  • "ভাষা এ", "একটি ভাল", "উত্তম অজগর", "পাইথন হ'ল"।

আটটি বিগ্রমের মধ্যে আপনার দুটি রয়েছে যা একই ("পাইথনটি" এবং "একটি ভাল"), তাই আপনি বলতে পারেন যে কাঠামোগত মিলটি 2/8।

অবশ্যই আপনি আরও নমনীয় হতে পারেন যদি আপনি ইতিমধ্যে জানেন যে দুটি শব্দ শব্দার্থগতভাবে সম্পর্কিত। যদি আপনি বলতে চান যে পাইথন একটি ভাল ভাষা কাঠামোগতভাবে একই রকম / জাভা এর সাথে অভিন্ন , তবে আপনি সেই তুলনাতে এটি যুক্ত করতে পারেন যাতে আপনি কার্যকরভাবে প্রক্রিয়া করেন "[প্রোজি_লং] একটি [পজিটিভ-এডিজে] ভাষা", বা অনুরূপ কিছু।


5

প্রথমত, আগে আমরা আরম্ভ আমি সুপারিশ করছি যে আপনি যেমন নেটওয়ার্কে অনুরূপ প্রশ্ন পড়ুন /datascience/25053/best-practical-algorithm-for-sentence-similarity এবং HTTPS: // Stackoverflow। কম / প্রশ্ন / 62328 / is-সেখানে একটি-অ্যালগরিদম যে-বলে-শব্দার্থিক-আদল অফ দুই বাক্যাংশ

বাক্যগুলির সাদৃশ্য নির্ধারণের জন্য আমাদের কী ধরণের ডেটা রয়েছে তা বিবেচনা করতে হবে। উদাহরণস্বরূপ, আপনার যদি একটি লেবেলযুক্ত ডেটাসেট অর্থাত্ অনুরূপ বাক্য এবং ভিন্ন ভিন্ন বাক্য থাকে তবে বাক্যগুলিকে শ্রেণিবদ্ধ করার জন্য একটি তদারক করা অ্যালগরিদম ব্যবহার করার জন্য একটি সোজা এগিয়ে যাওয়ার পদ্ধতি হতে পারে।

বাক্য কাঠামোগত মিল নির্ধারণ করতে পারে এমন একটি পদ্ধতির অর্থ হবে শব্দের এমবেডিং অ্যালগরিদমগুলি অর্থাৎ ওয়ার্ড 2vec দ্বারা উত্পাদিত ভেক্টর শব্দটি গড়ে। এই অ্যালগরিদমগুলি প্রতিটি শব্দের জন্য একটি ভেক্টর তৈরি করে এবং এর মধ্যে কোজাইন মিলটি শব্দের মধ্যে শব্দার্থক মিলের প্রতিনিধিত্ব করে। (ড্যানিয়েল এল 2017)

শব্দ ভেক্টর ব্যবহার করে আমরা শব্দের মিল খুঁজে পেতে নিম্নলিখিত মেট্রিকগুলি ব্যবহার করতে পারি।

  • শব্দের শব্দের এমবেডিংয়ের মধ্যে কোসিন দূরত্ব
  • শব্দের এমবেডিংয়ের মধ্যে ইউক্যালিডিয়ান দূরত্ব

কোসিন মিল একই অভ্যন্তরীণ পণ্য স্থানের দুটি অ-শূন্য ভেক্টরগুলির মধ্যে মিলের একটি পরিমাপ যা তাদের মধ্যবর্তী কোণটির কোসাইনকে পরিমাপ করে। কোসাইন কোণটি তাদের সামগ্রীর ক্ষেত্রে বাক্যগুলির মধ্যে ওভারল্যাপের পরিমাপ।

দুটি শব্দের ভেক্টরের মধ্যে ইউক্লিডিয়ান দূরত্ব সম্পর্কিত শব্দের ভাষাগত বা শব্দার্থক মিলটি পরিমাপ করার জন্য একটি কার্যকর পদ্ধতি সরবরাহ করে। (ফ্রাঙ্ক ডি 2015)

বিকল্পভাবে আপনি বাক্যটির মিল নির্ধারণ করতে বাক্যগুলির আইজেনভেেক্টর গণনা করতে পারেন।

ইগেনভেেক্টরগুলি সমীকরণের লিনিয়ার সিস্টেমের সাথে যুক্ত (যেমন ম্যাট্রিক্স সমীকরণ) ভেক্টরগুলির একটি বিশেষ সেট। এখানে প্রতিটি ক্লাস্টারের জন্য একটি বাক্য মিল ম্যাট্রিক্স উত্পন্ন হয় এবং ম্যাট্রিক্সের জন্য ইগেনভেেক্টর গণনা করা হয়। আপনি এই কাগজে https://pdfs.semanticscholar.org/ca73/bbc99be157074d8aad17ca8535e2cd956815.pdf এ বাক্য র‌্যাঙ্কিংয়ের জন্য ইগেনভেেক্টর ভিত্তিক পদ্ধতির উপর আরও পড়তে পারেন

সোর্স কোডের জন্য সিরাজ রাওয়ালের কাছে শব্দ ভেক্টরগুলির একটি সেট তৈরি করার জন্য একটি পাইথন নোটবুক রয়েছে। ভেক্টর শব্দটি তখন শব্দের মধ্যে মিল খুঁজে পেতে ব্যবহার করা যেতে পারে। উত্স কোডটি এখানে https://github.com/llSourcell/word_vectors_game_of_thrones-LIVE এ উপলব্ধ

আরেকটি বিকল্প হ'ল ওরিলির একটি টিউটোরিয়াল যা নথিগুলির মধ্যে সাদৃশ্য নির্ধারণের জন্য জিনসিন পাইথন লাইব্রেরিটি ব্যবহার করে। এই টিউটোরিয়ালটি টোকেনাইজ করতে NLTK ব্যবহার করে তারপরে কর্পাস থেকে একটি টিএফ-আইডিএফ (টার্ম ফ্রিকোয়েন্সি-ইনভার্স ডকুমেন্ট ফ্রিকোয়েন্সি) মডেল তৈরি করে। তারপরে টিএফ-আইডিএফ নথির সাদৃশ্য নির্ধারণের জন্য ব্যবহৃত হয়। টিউটোরিয়ালটি এখানে পাওয়া যায় https://www.oreilly.com/learning/how-do-i-compare-docament-sistanceity-used-python


সমস্যার মূল্যবান বিবরণ দেওয়ার জন্য ধন্যবাদ। আমি জিনসিমের উদাহরণটি দেখেছি তবে আমার একটি প্রশ্ন রয়েছে যে আমি যে প্রশ্নটিতে উল্লিখিত সমস্যাটি সমাধান করতে সক্ষম হব। যদিও আমি তৈরি করা সমাধানটি বাক্যগুলির মধ্যে সাদৃশ্য খুঁজে পেতে ভাল কাজ করছে তবে শব্দের ক্রম যখন ঝাঁকুনির সাথে থাকে তখন তা আটকে যায়।
শুভম তিওয়ারি

4

এই সময়ে সেরা পদ্ধতির (2019):

এখন সবচেয়ে কার্যকরী পদ্ধতি হ'ল গুগলের ইউনিভার্সাল সেনটেশন এনকোডার ( কাগজ_2018 ) ব্যবহার করা যা তাদের এম্বেডিংয়ের ডট পণ্য ব্যবহার করে (অর্থাত্ 215 টি মানের ভেক্টর শিখেছে) বাক্যগুলির মধ্যে অর্থগত মিলকে গণনা করে । সাদৃশ্যটি 0 (যেমন কোনও মিল নেই) এবং 1 (অর্থাত্ দৃ strong় মিল) এর মধ্যে একটি ভাসমান সংখ্যা

বাস্তবায়নটি এখন টেনসরফ্লো হাবের সাথে সংহত হয়েছে এবং সহজেই ব্যবহার করা যেতে পারে। 2 বাক্যটির মধ্যে মিলকে গণনা করার জন্য এখানে ব্যবহারের জন্য প্রস্তুত একটি কোড। এখানে আমি উদাহরণ হিসাবে "পাইথন একটি ভাল ভাষা" এবং "ভাষা একটি ভাল পাইথন হয়" এর মধ্যে মিল খুঁজে পাব ।

কোড উদাহরণ:

#Requirements: Tensorflow>=1.7 tensorflow-hub numpy

import tensorflow as tf
import tensorflow_hub as hub
import numpy as np

module_url = "https://tfhub.dev/google/universal-sentence-encoder-large/3" 
embed = hub.Module(module_url)
sentences = ["Python is a good language","Language a good python is"]

similarity_input_placeholder = tf.placeholder(tf.string, shape=(None))
similarity_sentences_encodings = embed(similarity_input_placeholder)

with tf.Session() as session:
  session.run(tf.global_variables_initializer())
  session.run(tf.tables_initializer())
  sentences_embeddings = session.run(similarity_sentences_encodings, feed_dict={similarity_input_placeholder: sentences})
  similarity = np.inner(sentences_embeddings[0], sentences_embeddings[1])
  print("Similarity is %s" % similarity)

আউটপুট:

Similarity is 0.90007496 #Strong similarity

2019 এর আর একটি বিকল্প হ'ল বিআরটিটি বাক্য এম্বেডিংস - আপনি এখানে উদাহরণ কোড দেখতে পারেন - github.com/hanxiao/bert-as-service
আদনান এস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.