আপেল (ফল) সম্পর্কিত টুইটগুলি থেকে অ্যাপল (ইনক।) সম্পর্কিত টুইটগুলি আলাদা করার জন্য আমি কীভাবে একটি মডেল তৈরি করতে পারি?


85

"আপেল" সম্পর্কে 50 টি টুইটের জন্য নীচে দেখুন। আমি অ্যাপল ইনক সম্পর্কিত ইতিবাচক ম্যাচগুলি লেবেল করেছি They সেগুলি নীচে 1 হিসাবে চিহ্নিত হয়েছে।

এখানে কয়েকটি লাইন দেওয়া হল:

1|“@chrisgilmer: Apple targets big business with new iOS 7 features http://bit.ly/15F9JeF ”. Finally.. A corp iTunes account!
0|“@Zach_Paull: When did green skittles change from lime to green apple? #notafan” @Skittles
1|@dtfcdvEric: @MaroneyFan11 apple inc is searching for people to help and tryout all their upcoming tablet within our own net page No.
0|@STFUTimothy have you tried apple pie shine?
1|#SuryaRay #India Microsoft to bring Xbox and PC games to Apple, Android phones: Report: Microsoft Corp... http://dlvr.it/3YvbQx  @SuryaRay

এখানে মোট ডেটা সেট করা হয়েছে: http://pastebin.com/eJuEb4eB

আমাকে এমন একটি মডেল তৈরি করতে হবে যা "অ্যাপল" (ইনক) এর শ্রেণিবদ্ধ করে। বাকি থেকে

আমি মেশিন লার্নিংয়ের একটি সাধারণ ওভারভিউ খুঁজছি না, বরং আমি কোডের আসল মডেলটি খুঁজছি ( পাইথন পছন্দসই)।


18
: আপনি মূলত এই চান en.wikipedia.org/wiki/Bayesian_spam_filtering
eddi

4
আপনি আপনার ডেটা হ্যান্ড লেবেল, কিন্তু স্কেল লাইব্রেরি চান। এটি তদারকি করা বা নিরীক্ষণবিহীন?
ডান

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

4
নাম দেওয়া সত্তা স্বীকৃতি: nlp.stanford.edu/software/CRF-NER.shtml
নীল ম্যাকগুইগান

4
আকর্ষণীয় @ নীলএমসিগুইগান। আমি তাদের ডেমোতে কিছু পাঠ্যে আটকালাম ( nlp.stanford.edu:8080/ner/process ) এবং বিভিন্ন মডেল কীভাবে শব্দগুলিকে শ্রেণিবদ্ধ করে তা দেখে আমি মুগ্ধ হয়েছি।
রায়ান

উত্তর:


39

আমি এটি নিম্নলিখিত হিসাবে করব:

  1. বাক্যটিকে কথায় বিভক্ত করুন, সেগুলি স্বাভাবিক করুন, অভিধান তৈরি করুন
  2. প্রতিটি শব্দের সাথে, সংস্থা সম্পর্কে টুইটগুলিতে তারা কতবার সংঘটিত হয়েছিল এবং এই ফল সম্পর্কে টুইটগুলিতে তারা কতবার উপস্থিত হয়েছিল তা সংরক্ষণ করুন - এই টুইটগুলি একটি মানুষের দ্বারা নিশ্চিত হওয়া উচিত
  3. যখন একটি নতুন টুইট আসে, অভিধানে প্রতিটি শব্দটি সন্ধান করুন, একটি ওজনযুক্ত স্কোর গণনা করুন - সংস্থার সাথে সম্পর্কিত যে শব্দগুলি প্রায়শই ব্যবহৃত হয় এটি একটি উচ্চ সংস্থার স্কোর পেতে পারে এবং তদ্বিপরীত; শব্দগুলি খুব কমই ব্যবহৃত হয়, বা সংস্থা এবং ফল উভয়ের সাথে ব্যবহৃত হয়, এর বেশি স্কোর হয় না।

4
এই সম্পর্কে আপনার উত্তর জন্য আপনাকে ধন্যবাদ। উপরের মন্তব্যের সাথে আপনার উত্তরটি সত্যই আমাকে সমাধানের দিকে এগিয়ে যেতে সাহায্য করেছিল। আপনি কি আমাকে এই সমাধানটিকে আরও উন্নত করতে সহায়তা করতে পারেন?
স্যাল

10
এটি বায়েশিয়ান শ্রেণিবিন্যাসের একটি অনানুষ্ঠানিক বর্ণনা।
সানাইটিইঙ্ক

4
আমি "বায়েশিয়ান শ্রেণিবিন্যাসের সিউডো কোড প্রয়োগকরণ" পছন্দ করি :) :)
আমাডনন ইনক।

73

আপনি যা খুঁজছেন তাকে নামযুক্ত সত্তা স্বীকৃতি বলা হয় । এটি একটি স্ট্যাটিস্টিকাল টেকনিক যা (সর্বাধিক সাধারণভাবে) নামধারী সংস্থাগুলি সম্পর্কে শিখার প্রশিক্ষণ প্রাপ্তির ভিত্তিতে নামযুক্ত সত্তাগুলি সন্ধান করার জন্য শর্তাধীন র্যান্ডম ক্ষেত্রগুলি ব্যবহার করে ।

মূলত, এটি শব্দের বিষয়বস্তু এবং প্রসঙ্গে (কয়েকটি শব্দকে পিছনে এবং সামনে তাকিয়ে) দেখায় , শব্দটি একটি নামকৃত সত্তা হওয়ার সম্ভাবনাটি অনুমান করে।

ভাল সফ্টওয়্যার শব্দের অন্যান্য বৈশিষ্ট্য যেমন তাদের দৈর্ঘ্য বা আকৃতি (যেমন "ভিসিভি" যদি এটি "স্বর-ব্যঞ্জন-স্বর" দিয়ে শুরু হয়) দিকে নজর দিতে পারে

একটি খুব ভাল গ্রন্থাগার (জিপিএল) হ'ল স্ট্যানফোর্ডের NER

এখানে ডেমো: http://nlp.stanford.edu:8080/ner/

চেষ্টা করার জন্য কিছু নমুনা পাঠ্য:

আমি অ্যাপল সদর দফতরে একটি আপেল খাচ্ছিলাম এবং আমি কোল্ডপ্লে লোকের মেয়ে অ্যাপল মার্টিনের কথা ভেবেছিলাম

(3 ক্লাস এবং 4 ক্লাসের শ্রেণিবদ্ধরা এটি সঠিকভাবে পেয়েছে)


4
এটা সত্যিই আকর্ষণীয় ছিল। কোডটি দেখতে কি সম্ভব english.conll.4class.distsim.crf.ser.gz? আমি দেখতে চাই যে কেউ কীভাবে এরকম কিছু তৈরি করে।
রায়ান

এনইআর এর কোডটি ওপেন সোর্স, তবে তারা সিওএনএলএল সম্মেলনে যে ডেটা ব্যবহার করেছিল তা নয়। তবে আপনি এনআইএসটিতে রয়টার্স কর্পস অনলাইনে খুঁজে পেতে পারেন।
নিল ম্যাকগুইগান

31

আমার কাছে একটি আধা-কার্যক্ষম সিস্টেম রয়েছে যা এই সমস্যাটি সমাধান করে, সাইকাইট-লার্ন ব্যবহার করে খোলা সোর্সযুক্ত ব্লগ পোস্টগুলির একটি সিরিজ যা আমি করছি তা বর্ণনা করে। আমি যে সমস্যার মুখোমুখি হচ্ছি তা হ'ল শব্দ-বোধের প্রতিবন্ধকতা (একাধিক শব্দের সংজ্ঞা বিকল্পগুলির মধ্যে একটি বেছে নেওয়া ), যা নামযুক্ত সত্তার স্বীকৃতি হিসাবে একই নয়। আমার প্রাথমিক পদ্ধতির বিদ্যমান সমাধানগুলির সাথে কিছুটা প্রতিযোগিতামূলক এবং (গুরুতরভাবে) অনুকূলিতাপূর্ণ।

কিছু বিদ্যমান বাণিজ্যিক NER সরঞ্জাম (ওপেনকালাইস, ডিবিপিডিয়া স্পটলাইট এবং আলকেমিপিআই) রয়েছে যা আপনাকে যথেষ্ট ভাল বাণিজ্যিক ফলাফল দিতে পারে - প্রথমে এগুলি ব্যবহার করে দেখুন!

আমি এর কয়েকটি ক্লায়েন্ট প্রকল্পের জন্য ব্যবহার করেছি (আমি লন্ডনে এনএলপি / এমএল ব্যবহারের পরামর্শ দিই), তবে আমি তাদের পুনর্বিবেচনার ( যথার্থতা এবং প্রত্যাহার ) নিয়ে সন্তুষ্ট নই । মূলত তারা সুনির্দিষ্ট হতে পারে (যখন তারা "এটি অ্যাপল ইনক বলে" তারা সাধারণত সঠিক) তবে কম স্মরণে তারা খুব কমই বলে "এটি অ্যাপল ইনক" যদিও একটি মানুষের কাছে টুইটটি অ্যাপল ইনক সম্পর্কিত স্পষ্টতই রয়েছে)। আমি বুঝতে পেরেছি এটি টুইটের অনুসারে ওপেন সোর্স সংস্করণ তৈরি করা বৌদ্ধিকভাবে আকর্ষণীয় অনুশীলন হবে। এখানে বর্তমান কোডটি রয়েছে: https://github.com/ianozsvald/social_media_brand_disambiguator

আমি খেয়াল করব - আমি ইতিমধ্যে আপনার কাছে নাম থাকলে ব্র্যান্ডের ডিসাম্বিগুয়েশন (সংস্থাগুলি, লোক ইত্যাদি) এই পদ্ধতির সাহায্যে সাধারণকরণ শব্দ-সংবেদনহীন সমস্যাটি সমাধান করার চেষ্টা করছি না । এই কারণেই আমি বিশ্বাস করি যে এই সোজা পদ্ধতির কাজ হবে।

আমি এটি ছয় সপ্তাহ আগে শুরু করেছি এবং এটি পাইথন ২.7 এ সাইকিট-লার্ন ব্যবহার করে লেখা হয়েছিল। এটি একটি খুব বেসিক পদ্ধতির ব্যবহার করে। আমি বাইনারি কাউন্ট ভেক্টরাইজার ব্যবহার করে ভেক্টরাইজ করি (আমি কেবল একটি শব্দটি উপস্থিত কিনা কিনা তা গণনা করি, কতবার নয়) ৩-৪  এন-গ্রাম দিয়ে । আমি টিএফ-আইডিএফ দিয়ে স্কেল করি না (আপনার যখন ভেরিয়েবল ডকুমেন্টের দৈর্ঘ্য থাকে তখন টিএফ-আইডিএফ ভাল হয়; আমার জন্য টুইটগুলি কেবল একটি বা দুটি বাক্য হয়, এবং আমার পরীক্ষার ফলাফলগুলি টিএফ-আইডিএফ দিয়ে উন্নতি দেখায় না)।

আমি বেসিক টোকেনাইজার ব্যবহার করি যা খুব বেসিক তবে আশ্চর্যজনকভাবে কার্যকর useful এটি @ # কে উপেক্ষা করে (যাতে আপনি কিছু প্রসঙ্গ হারাবেন) এবং অবশ্যই কোনও URL প্রসারিত করে না। আমি তখন লজিস্টিক রিগ্রেশন ব্যবহার করে প্রশিক্ষণ দিই এবং মনে হয় যে এই সমস্যাটি কিছুটা লৈখিক বিভাজক (এক শ্রেণীর জন্য প্রচুর শর্ত অন্য শ্রেণীর জন্য বিদ্যমান নেই)। বর্তমানে আমি কোনও স্টেমিং / ক্লিনিং এড়ানো হচ্ছে (আমি সর্বাধিক সম্ভাব্য জিনিসটি যে কাজটি করতে পারি তা চেষ্টা করছি)।

কোডটিতে একটি পূর্ণ README রয়েছে এবং আপনি আপনার টুইটগুলি তুলনামূলকভাবে সহজেই নিখুঁত করতে সক্ষম হন এবং তারপরে পরীক্ষার জন্য আমার পরামর্শগুলি অনুসরণ করতে পারেন।

এটি অ্যাপলের পক্ষে কাজ করে কারণ লোকেরা অ্যাপল কম্পিউটার খায় বা না খায়, না আমরা ফলের সাথে টাইপ করি বা খেলি না, সুতরাং শব্দগুলি সহজেই একটি বিভাগ বা অন্য বিভাগে বিভক্ত হয়ে যায়। টিভি শোতে # ডেফিনান্সের মতো কিছু বিবেচনা করার সময় এই শর্তটি ধরে রাখতে পারে না (যেখানে লোকেরা আরব বসন্ত, ক্রিকেট ম্যাচ, পরীক্ষার পুনর্বিবেচনা এবং একটি সঙ্গীত ব্যান্ডের ক্ষেত্রে # উপসর্গও ব্যবহার করে)। ক্লিভারার পদ্ধতির এখানে ভাল প্রয়োজন হতে পারে।

ব্রাইটন পাইথন ব্যবহারকারীগোষ্ঠীতে আমি দেওয়া এক ঘন্টার উপস্থাপনা সহ এই প্রকল্পটির বর্ণনা দিয়ে আমার কাছে একাধিক ব্লগ পোস্ট রয়েছে (যা ডেটা সায়েন্সলন্ডনের 140 জন ব্যক্তির পক্ষে একটি ছোট উপস্থাপনা রূপান্তরিত হয়েছিল)।

আপনি যদি লজিস্টিক রিগ্রেশন (যেমন আপনি প্রতিটি শ্রেণিবিন্যাসের সম্ভাবনা পেয়ে থাকেন) এর মতো কিছু ব্যবহার করেন তবে আপনি কেবল আত্মবিশ্বাসী শ্রেণিবিন্যাস বেছে নিতে পারেন, এবং এইভাবে আপনি পুনরুদ্ধারের বিরুদ্ধে লেনদেন করে উচ্চ নির্ভুলতা জোর করতে পারেন (যাতে আপনি সঠিক ফলাফল পেয়ে থাকেন তবে এর চেয়ে কম)। আপনাকে এটি আপনার সিস্টেমে টিউন করতে হবে।

এখানে স্কাইকিট-লার্ন ব্যবহার করে একটি সম্ভাব্য অ্যালগরিদমিক পদ্ধতি রয়েছে:

  • বাইনারি কাউন্টভেেক্টর ব্যবহার করুন (আমি মনে করি না সংক্ষিপ্ত বার্তাগুলিতে শব্দগুণ গণনাগুলি বেশি তথ্য যুক্ত করে কারণ বেশিরভাগ শব্দ কেবল একবার ব্যবহৃত হয়)
  • একটি সিদ্ধান্ত গাছ শ্রেণিবদ্ধ সঙ্গে শুরু করুন। এটির ব্যাখ্যাযোগ্য পারফরম্যান্স থাকবে ( উদাহরণের জন্য সিদ্ধান্ত গাছের সাথে ওভারফিটিং দেখুন )।
  • লজিস্টিক রিগ্রেশন এ সরান
  • শ্রেণিবদ্ধদের দ্বারা উত্পন্ন ত্রুটিগুলি অনুসন্ধান করুন (ডিসিশনট্রির রফতানি আউটপুটটি পড়ুন বা লজিস্টিক রিগ্রেশন-এর সহগগুলি দেখুন, ভ্যাক্টরিজারের মাধ্যমে ফিরে শ্রেণীবদ্ধ শ্রেণিবদ্ধ টুইটগুলি ব্যবহার করুন যা ওয়ার্ডের উপস্থাপনের অন্তর্নিহিত ব্যাগটি দেখতে কেমন তা দেখতে - সেখানে কম টোকেন থাকবে) আপনি কাঁচা টুইট দিয়ে শুরু করেছেন - শ্রেণিবিন্যাসের জন্য যথেষ্ট আছে কি?)
  • এই পদ্ধতির কাজের সংস্করণের জন্য https://github.com/ianozsvald/social_media_brand_disambiguator/blob/master/learn1.py এ আমার উদাহরণ কোডটি দেখুন

বিবেচনা করার বিষয়গুলি:

  • আপনার আরও বড় ডেটাসেট দরকার need আমি 2000 লেবেলযুক্ত টুইটগুলি ব্যবহার করছি (এটি আমার পাঁচ ঘন্টা সময় নিয়েছে), এবং সর্বনিম্ন হিসাবে আপনি> প্রতি ক্লাস> 100 সহ একটি ভারসাম্যপূর্ণ সেট চান (নীচে অতিরিক্ত নোট দেখুন)
  • টোকেনে # @ রাখতে টোকেনাইজারটি উন্নত করুন (সাইকিট-শিখার সাথে খুব সহজ), এবং সম্ভবত একটি মূলধন-ব্র্যান্ড সনাক্তকারী যুক্ত করুন (ব্যবহারকারী হিসাবে @ ব্যবহারকারী 2425429 নোট)
  • যখন জিনিসগুলি আরও শক্ত হয় তখন একটি অ-রৈখিক শ্রেণিবদ্ধ (যেমন উপরে ওয়েজের পরামর্শ মত) বিবেচনা করুন। ব্যক্তিগতভাবে আমি লিনিয়ারএসভিসি লজিস্টিক রিগ্রেশন থেকে খারাপ করতে পেয়েছি (তবে এটি উচ্চ মাত্রিক বৈশিষ্ট্যের জায়গার কারণে হতে পারে যা আমি এখনও হ্রাস করতে পারি নি)।
  • স্পিচ ট্যাগারের একটি টুইট-নির্দিষ্ট অংশ (স্ট্যান্ডফোর্ডের @ নীলের পরামর্শ অনুসারে আমার নম্র মতামতটি নয় - এটি আমার অভিজ্ঞতার মধ্যে দুর্বল টুইটার ব্যাকরণে খারাপ অভিনয় করে)
  • আপনার কাছে প্রচুর টোকেন হয়ে গেলে আপনি সম্ভবত কিছু মাত্রিক হ্রাস করতে চান (আমি এটি এখনও চেষ্টা করি নি - লজিস্টিক রিগ্রেশন এল 1 এল 2 জরিমানার উপর আমার ব্লগ পোস্টটি দেখুন)

রে overfitting। আমার 2000 টি আইটেমের সাথে ডেটাসেটে আমার কাছে 'আপেল' টুইটারের 10 মিনিটের স্ন্যাপশট রয়েছে। প্রায় 2/3 টি টুইট অ্যাপল ইনক এর জন্য, 1/2 অন্যান্য-আপেল-ব্যবহারের জন্য। আমি প্রতিটি শ্রেণীর একটি ভারসাম্য উপসেট (প্রায় 584 টি সারি মনে করি) টেনে আনি এবং প্রশিক্ষণের জন্য পাঁচগুণ ক্রস বৈধকরণ করি।

যেহেতু আমার কাছে কেবলমাত্র 10 মিনিটের টাইম উইন্ডো রয়েছে একই বিষয়টি সম্পর্কে আমার কাছে অনেকগুলি টুইট রয়েছে এবং সম্ভবত আমার শ্রেণিবদ্ধকারী বিদ্যমান সরঞ্জামগুলির সাথে তুলনামূলকভাবে এতটা ভালভাবে কাজ করেন - এটি সাধারণত সাধারণকরণ ছাড়াই প্রশিক্ষণের বৈশিষ্ট্যগুলিতে অতিরিক্ত উপযোগী হবে (যদিও বিদ্যমান বাণিজ্যিকগুলি সরঞ্জামগুলি এই স্ন্যাপশপে আরও খারাপ কাজ করে তবে আরও নির্ভরযোগ্যভাবে ডেটার বিস্তৃত সেট জুড়ে)) কাজের পরবর্তী অংশ হিসাবে এটি পরীক্ষা করতে আমি আমার সময় উইন্ডোটি প্রসারিত করব।


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

4
কোনও সমস্যা নেই :-) কোড, README এবং ব্লগ পোস্টগুলি আপনাকে আমার পদ্ধতির সম্পর্কে ধারণা দেবে। এটি ইচ্ছাকৃতভাবে সহজ তবে কাজটি ঠিক আছে বলে মনে হচ্ছে।
ইয়ান ওজসভাল্ড

12

আপনি নিম্নলিখিতটি করতে পারেন:

  1. ফল এবং সংস্থার সম্পর্কিত টুইটগুলিতে তাদের সংখ্যার সংখ্যার সাথে শব্দের একটি বাক্য তৈরি করুন। এটির নমুনা টুইটগুলি খাওয়ানোর মাধ্যমে এটি অর্জন করা যেতে পারে যার ঝোঁক আমরা জানি।

  2. পর্যাপ্ত পূর্ববর্তী ডেটা ব্যবহার করে, আমরা আপেল ইনক সম্পর্কে টুইটে সংঘটিত শব্দের সম্ভাবনা খুঁজে বের করতে পারি।

  3. সম্পূর্ণ টুইটের সম্ভাব্যতা পেতে শব্দের পৃথক সম্ভাব্যতাগুলি গুণান।

সরলীকৃত উদাহরণ:

p_f = ফলের টুইটের সম্ভাবনা।

p_w_f = একটি ফলের টুইটে শব্দের সম্ভাবনা।

p_t_f = একটি ফলের টুইটের সাথে টুইটের সমস্ত শব্দের সম্মিলিত সম্ভাবনা = p_w1_f * p_w2_f * ...

p_f_t = একটি নির্দিষ্ট টুইট দেওয়া ফলের সম্ভাবনা।

p_c, p_w_c, p_t_c, p_c_t কোম্পানির জন্য সম্পর্কিত মান।

আমাদের ডেটাবেজে নেই এমন নতুন শব্দের শূন্য ফ্রিকোয়েন্সি সমস্যাটি দূর করতে মান 1 এর একটি ল্যাপ্যালাকিয়ান স্মুথর যুক্ত করা হয়েছে।

old_tweets = {'apple pie sweet potatoe cake baby https://vine.co/v/hzBaWVA3IE3': '0', ...}
known_words = {}
total_company_tweets = total_fruit_tweets =total_company_words = total_fruit_words = 0

for tweet in old_tweets:
    company = old_tweets[tweet]
    for word in tweet.lower().split(" "):
        if not word in known_words:
            known_words[word] = {"company":0, "fruit":0 }
        if company == "1":
            known_words[word]["company"] += 1
            total_company_words += 1
        else:
            known_words[word]["fruit"] += 1
            total_fruit_words += 1

    if company == "1":
        total_company_tweets += 1
    else:
        total_fruit_tweets += 1
total_tweets = len(old_tweets)

def predict_tweet(new_tweet,K=1):
    p_f = (total_fruit_tweets+K)/(total_tweets+K*2)
    p_c = (total_company_tweets+K)/(total_tweets+K*2)
    new_words = new_tweet.lower().split(" ")

    p_t_f = p_t_c = 1
    for word in new_words:
        try:
            wordFound = known_words[word]
        except KeyError:
            wordFound = {'fruit':0,'company':0}
        p_w_f = (wordFound['fruit']+K)/(total_fruit_words+K*(len(known_words)))
        p_w_c = (wordFound['company']+K)/(total_company_words+K*(len(known_words)))
    p_t_f *= p_w_f
    p_t_c *= p_w_c

    #Applying bayes rule
    p_f_t = p_f * p_t_f/(p_t_f*p_f + p_t_c*p_c)
    p_c_t = p_c * p_t_c/(p_t_f*p_f + p_t_c*p_c)
    if p_c_t > p_f_t:
        return "Company"
    return "Fruit"

9

আপনার যদি বাইরের লাইব্রেরি ব্যবহার করে সমস্যা না হয় তবে আমি বিজ্ঞান-শিখার সুপারিশ করব কারণ এটি আপনার নিজের কোডিংয়ের চেয়ে সম্ভবত এটি আরও ভাল এবং দ্রুত করতে পারে। আমি এই জাতীয় কিছু করব:

আপনার কর্পস তৈরি করুন। আমি স্পষ্টতার জন্য তালিকাটি উপলব্ধি করেছি, তবে কীভাবে আপনার ডেটা সংরক্ষণ করা হবে তার উপর নির্ভর করে আপনাকে বিভিন্ন জিনিস করতে হতে পারে:

def corpus_builder(apple_inc_tweets, apple_fruit_tweets):
    corpus = [tweet for tweet in apple_inc_tweets] + [tweet for tweet in apple_fruit_tweets]
    labels = [1 for x in xrange(len(apple_inc_tweets))] + [0 for x in xrange(len(apple_fruit_tweets))]
    return (corpus, labels)

গুরুত্বপূর্ণ বিষয়টি হল আপনি দুটি তালিকাগুলি সমাপ্ত হ'ল:

([['apple inc tweet i love ios and iphones'], ['apple iphones are great'], ['apple fruit tweet i love pie'], ['apple pie is great']], [1, 1, 0, 0])

[1, 1, 0, 0] ইতিবাচক এবং নেতিবাচক লেবেলগুলি উপস্থাপন করে।

তারপরে, আপনি একটি পাইপলাইন তৈরি করুন! পাইপলাইন হ'ল বিজ্ঞান-শিখার শ্রেণি যা পাঠ্য প্রক্রিয়াজাতকরণের পদক্ষেপগুলিকে এক সাথে চেইন করা সহজ করে তোলে যাতে প্রশিক্ষণ / ভবিষ্যদ্বাণী করার সময় আপনাকে কেবলমাত্র একটি বস্তুর কল করতে হবে:

def train(corpus, labels)
    pipe = Pipeline([('vect', CountVectorizer(ngram_range=(1, 3), stop_words='english')),
                        ('tfidf', TfidfTransformer(norm='l2')),
                        ('clf', LinearSVC()),])
    pipe.fit_transform(corpus, labels)
    return pipe

পাইপলাইনের ভিতরে তিনটি প্রক্রিয়াধীন পদক্ষেপ রয়েছে। কাউন্টভেক্টরাইজার শব্দগুলিকে টোকেনাইজ করে, সেগুলি বিভক্ত করে, গণনা করে এবং ডেটাগুলিকে একটি বিচ্ছিন্ন ম্যাট্রিক্সে রূপান্তর করে। TfidfTransformer alচ্ছিক, এবং আপনি সঠিকতা রেটিংয়ের উপর নির্ভর করে এটিকে সরাতে চাইবেন (ক্রস বৈধতা পরীক্ষা করা এবং সেরা পরামিতিগুলির জন্য গ্রিড অনুসন্ধান কিছুটা জড়িত, সুতরাং আমি এখানে এটি পাব না)। লিনিয়ারএসভিসি হ'ল মানক পাঠ্য শ্রেণিবদ্ধকরণ অ্যালগরিদম।

অবশেষে, আপনি টুইটগুলির বিভাগটির পূর্বাভাস দিন:

def predict(pipe, tweet):
    prediction = pipe.predict([tweet])
    return prediction

আবার, টুইটটি একটি তালিকায় থাকা দরকার, তাই আমি ধরে নিয়েছিলাম এটি একটি স্ট্রিং হিসাবে ফাংশনে প্রবেশ করছে।

এগুলি সমস্ত শ্রেণিতে বা যাই হোক না কেন এবং আপনার কাজ শেষ। অন্তত, এই খুব প্রাথমিক উদাহরণ সহ।

আমি এই কোডটি পরীক্ষা করি নি তাই আপনি যদি কেবল অনুলিপি-পেস্ট করেন তবে এটি কাজ করতে পারে না তবে আপনি যদি সাইকিট-লার্ন ব্যবহার করতে চান তবে এটি আপনাকে কোথা থেকে শুরু করবেন সে সম্পর্কে ধারণা দেওয়া উচিত।

সম্পাদনা: আরও বিশদে পদক্ষেপগুলি ব্যাখ্যা করার চেষ্টা করা হয়েছে।


6

একটি সিদ্ধান্ত গাছ ব্যবহার করা এই সমস্যার জন্য বেশ ভাল কাজ করে বলে মনে হচ্ছে। কমপক্ষে এটি আমার নির্বাচিত বৈশিষ্ট্যগুলির সাথে নিরীহ বেইস শ্রেণিবদ্ধের চেয়ে উচ্চতর নির্ভুলতা উত্পাদন করে।

আপনি যদি কিছু সম্ভাবনা নিয়ে খেলতে চান তবে নীচের কোডটি ব্যবহার করতে পারেন, যার জন্য এনল্টক ইনস্টল করা প্রয়োজন। এনল্টক বইটি নিখরচায় অনলাইনে উপলভ্যও রয়েছে, সুতরাং এই সমস্ত কীভাবে কাজ করে তা সম্পর্কে আপনি কিছুটা পড়তে চাইতে পারেন: http://nltk.googlecode.com/svn/trunk/doc/book/ch06.html

#coding: utf-8
import nltk
import random
import re

def get_split_sets():
    structured_dataset = get_dataset()
    train_set = set(random.sample(structured_dataset, int(len(structured_dataset) * 0.7)))
    test_set = [x for x in structured_dataset if x not in train_set]

    train_set = [(tweet_features(x[1]), x[0]) for x in train_set]
    test_set = [(tweet_features(x[1]), x[0]) for x in test_set]
    return (train_set, test_set)

def check_accurracy(times=5):
    s = 0
    for _ in xrange(times):
        train_set, test_set = get_split_sets()
        c = nltk.classify.DecisionTreeClassifier.train(train_set)
        # Uncomment to use a naive bayes classifier instead
        #c = nltk.classify.NaiveBayesClassifier.train(train_set)
        s += nltk.classify.accuracy(c, test_set)

    return s / times


def remove_urls(tweet):
    tweet = re.sub(r'http:\/\/[^ ]+', "", tweet)
    tweet = re.sub(r'pic.twitter.com/[^ ]+', "", tweet)
    return tweet

def tweet_features(tweet):
    words = [x for x in nltk.tokenize.wordpunct_tokenize(remove_urls(tweet.lower())) if x.isalpha()]
    features = dict()
    for bigram in nltk.bigrams(words):
        features["hasBigram(%s)" % ",".join(bigram)] = True
    for trigram in nltk.trigrams(words):
        features["hasTrigram(%s)" % ",".join(trigram)] = True  
    return features

def get_dataset():
    dataset = """copy dataset in here
"""
    structured_dataset = [('fruit' if x[0] == '0' else 'company', x[2:]) for x in dataset.splitlines()]
    return structured_dataset

if __name__ == '__main__':
    print check_accurracy()

4
কিভাবে কাজ করে? আমি আপনার কোডে আপনার "নির্বাচিত বৈশিষ্ট্যগুলি" দেখছি না। প্রশিক্ষণ সেটের উপর ভিত্তি করে এটি কী স্বয়ংক্রিয়ভাবে বৈশিষ্ট্যগুলি চয়ন করে? বা এটি dict()অন্য কোথাও সঞ্চিত আছে ? আমি মনে করি যদি কারও প্রশিক্ষণের সেটটি যথেষ্ট পরিমাণে বড় হয় তবে কোনও কম্পিউটার কি সেই বৈশিষ্ট্যগুলি নিজেই বের করতে সক্ষম হবে না? (আনসারভিজড?)
রায়ান

4
বৈশিষ্ট্যগুলি টুইটার_সামান্য ফাংশন ব্যবহার করে নিষ্কাশন করা হয়। এটি মূলত টুইটগুলি থেকে ইউআরএলগুলি সরিয়ে দেয় এবং তারপরে একটি বৈশিষ্ট্য ডেক তৈরি করে যার প্রবেশগুলি 'hasBigram (foo, বার)' এর মতো কিছু পড়ে। = সত্য।
পল ডাবস

4
সুতরাং 'hasBigram(foo,bar)' = Trueযেখানে টুইট স্ট্রিং অন্তর্ভুক্ত foo bar? সুতরাং এটি প্রতিটি টুইটের জন্য বিগ্রাম এবং ট্রিগার তৈরি করে এবং এটি ইতিবাচক বৈশিষ্ট্যে ফ্ল্যাগ করে dict()? অতএব কিচ্কিচ্ দেওয়া "alpha beta gamma delta", এটা অভি () জন্য bigrams গড়ে তুলবে alpha,beta; beta,gamma; and gamma,delta;এবং জন্য trigrams alpha,beta,gammaএবং beta,gamma,delta? এবং প্রদত্ত ইতিবাচক এবং নেতিবাচক দ্বি এবং ত্রি গ্রাম থেকে, সিদ্ধান্তগ্রন্থী বা বেয়েস শ্রেণিবদ্ধীরা কি তাদের যাদু করতে পারে?
রায়ান

4
হুবহু বেয়েস ক্লাসিফায়ার ব্যবহার করার সময় আপনি এতে "শো_মোস্ট_মিনফর্মটিভ_ফিটচার্স ()" কল করে সর্বাধিক দরকারী বৈশিষ্ট্যগুলি পেতে পারেন।
পল ডাবস

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

5

এই পর্যন্ত মন্তব্যের জন্য আপনাকে ধন্যবাদ। আমি পিএইচপি দিয়ে প্রস্তুত একটি কাজের সমাধান এখানে । আমি এখনও অন্যদের কাছ থেকে এই একই সমাধানের জন্য আরও অ্যালগরিদমিক পদ্ধতির কথা শুনতে আগ্রহী।

<?php

// Confusion Matrix Init
$tp = 0;
$fp = 0;
$fn = 0;
$tn = 0;
$arrFP = array();
$arrFN = array();

// Load All Tweets to string
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://pastebin.com/raw.php?i=m6pP8ctM');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$strCorpus = curl_exec($ch);
curl_close($ch);

// Load Tweets as Array
$arrCorpus = explode("\n", $strCorpus);
foreach ($arrCorpus as $k => $v) {
    // init
    $blnActualClass = substr($v,0,1);
    $strTweet = trim(substr($v,2));

    // Score Tweet
    $intScore = score($strTweet);

    // Build Confusion Matrix and Log False Positives & Negatives for Review
    if ($intScore > 0) {
        if ($blnActualClass == 1) {
            // True Positive
            $tp++;
        } else {
            // False Positive
            $fp++;
            $arrFP[] = $strTweet;
        }
    } else {
        if ($blnActualClass == 1) {
            // False Negative
            $fn++;
            $arrFN[] = $strTweet;
        } else {
            // True Negative
            $tn++;
        }
    }
}

// Confusion Matrix and Logging
echo "
           Predicted
            1     0
Actual 1   $tp     $fp
Actual 0    $fn    $tn

";

if (count($arrFP) > 0) {
    echo "\n\nFalse Positives\n";
    foreach ($arrFP as $strTweet) {
        echo "$strTweet\n";
    }
}

if (count($arrFN) > 0) {
    echo "\n\nFalse Negatives\n";
    foreach ($arrFN as $strTweet) {
        echo "$strTweet\n";
    }
}

function LoadDictionaryArray() {
    $strDictionary = <<<EOD
10|iTunes
10|ios 7
10|ios7
10|iPhone
10|apple inc
10|apple corp
10|apple.com
10|MacBook
10|desk top
10|desktop
1|config
1|facebook
1|snapchat
1|intel
1|investor
1|news
1|labs
1|gadget
1|apple store
1|microsoft
1|android
1|bonds
1|Corp.tax
1|macs
-1|pie
-1|clientes
-1|green apple
-1|banana
-10|apple pie
EOD;

    $arrDictionary = explode("\n", $strDictionary);
    foreach ($arrDictionary as $k => $v) {
        $arr = explode('|', $v);
        $arrDictionary[$k] = array('value' => $arr[0], 'term' => strtolower(trim($arr[1])));
    }
    return $arrDictionary;
}

function score($str) {
    $str = strtolower($str);
    $intScore = 0;
    foreach (LoadDictionaryArray() as $arrDictionaryItem) {
        if (strpos($str,$arrDictionaryItem['term']) !== false) {
            $intScore += $arrDictionaryItem['value'];
        }
    }
    return $intScore;
}
?>

উপরের ফলাফলগুলি:

           Predicted
            1     0
Actual 1   31     1
Actual 0    1    17


False Positives
1|Royals apple #ASGame @mlb @ News Corp Building http://instagram.com/p/bBzzgMrrIV/


False Negatives
-1|RT @MaxFreixenet: Apple no tiene clientes. Tiene FANS// error.... PAGAS por productos y apps, ergo: ERES CLIENTE.

4

সব উদাহরণ যে আপনার দেওয়া, অ্যাপল (Inc) হয় হিসেবে অভিহিত করা হয় একটি pple বা Apple Inc , তাই একটি সম্ভাব্য উপায়ে জন্য অনুসন্ধান করতে হতে পারে:

  • অ্যাপলের মূলধন "এ"

  • আপেল পরে একটি "ইনক"

  • "ওএস", "অপারেটিং সিস্টেম", "ম্যাক", "আইফোন", ... এর মতো শব্দ / বাক্যাংশ

  • বা তাদের সংমিশ্রণ


4
ফাংশনে আমি বড় বড় অক্ষরগুলি ফিল্টার করার জন্য একটি স্ট্রোলটার করেছি। একটু অশোধিত, কিন্তু এটি কাজ করে।
এসএল

@ সাল আমি এটি খুব কার্যকর হবে বলে আশা করিনি, তবে আপনার যদি সময়সীমা থাকে তবে ...
ব্যবহারকার 2425429

4

শর্তাধীন র্যান্ডম ক্ষেত্রগুলির উপর ভিত্তি করে উত্তরগুলি সরল করার জন্য ... প্রসঙ্গটি এখানে বিশাল। আপনি সেই টুইটগুলিতে বাছাই করতে চাইবেন যা অ্যাপলকে স্পষ্টভাবে বনাম অ্যাপলের ফল প্রদর্শন করবে। আমাকে এখানে এমন বৈশিষ্ট্যগুলির একটি তালিকা রূপরেখা দিন যা আপনার পক্ষে শুরু করার জন্য কার্যকর হতে পারে। আরও তথ্যের জন্য বিশেষ্য বাক্যাংশ ছাঁটাই এবং BIO লেবেল নামে পরিচিত কিছু সন্ধান করুন। ( Http://www.cis.upenn.edu/~pereira/papers/crf.pdf ) দেখুন

পার্শ্ববর্তী শব্দ: পূর্ববর্তী শব্দ এবং পরবর্তী শব্দটির জন্য একটি বৈশিষ্ট্য ভেক্টর তৈরি করুন বা আপনি আরও বৈশিষ্ট্যগুলি সম্ভবত পূর্ববর্তী 2 এবং পরবর্তী 2 শব্দের চান। আপনি মডেলটিতে খুব বেশি শব্দ চান না বা এটি ডেটার সাথে খুব ভাল মেলে না। প্রাকৃতিক ভাষা প্রক্রিয়াকরণে আপনি এটিকে যথাসম্ভব সাধারণ রাখতে চাইছেন।

আশেপাশের শব্দগুলি থেকে প্রাপ্ত অন্যান্য বৈশিষ্ট্যগুলির মধ্যে নিম্নলিখিতটি অন্তর্ভুক্ত রয়েছে:

প্রথম চরিত্রটি মূলধন কিনা

শব্দের শেষ অক্ষর একটি সময়কাল কিনা

শব্দের বক্তব্যের অংশ (বক্তৃতা ট্যাগিংয়ের অংশটি দেখুন)

শব্দের নিজেই পাঠ্য

আমি এটি পরামর্শ দিচ্ছি না, তবে বিশেষত অ্যাপলের জন্য বৈশিষ্ট্যগুলির আরও উদাহরণ দেওয়ার জন্য:

ওয়ার্ডআইএস (অ্যাপল)

নেক্সট ওয়ার্ল্ডস (ইনক।)

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

মনে রাখবেন যে প্রাকৃতিক ভাষা প্রক্রিয়াজাতকরণ একটি পাইপলাইন ভিত্তিক সিস্টেম। সাধারণত, আপনি বাক্যগুলিতে জিনিসগুলি ভেঙে টোকেনাইজেশনে যান, তারপরে স্পিচ ট্যাগিং বা এমনকি নির্ভরতা পার্সিংয়ের অংশটি করেন।

আপনি যা সন্ধান করছেন তা শনাক্ত করার জন্য আপনার মডেলটিতে আপনি যে বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন তার একটি তালিকা পেতে এটিই এগুলি।


3

সেখানে প্রক্রিয়াকরণের প্রাকৃতিক ভাষা লেখার জন্য সত্যিই একটি ভাল লাইব্রেরি পাইথন নামকnltk । আপনার এটি একবার দেখা উচিত।

যে কৌশলটি আপনি চেষ্টা করতে পারেন তা হ'ল এন-গ্রাম (শব্দের গোষ্ঠী) এ "অ্যাপল" শব্দটি দিয়ে দেখুন। কিছু ফল ফলের কথা বলার সময় "আপেল" এর পাশে ব্যবহার করা বেশি, অন্যরা সংস্থার কথা বলার সময় এবং আপনি সেগুলি টুইটগুলি শ্রেণিবদ্ধ করার জন্য ব্যবহার করতে পারেন।


4
ধন্যবাদ মনেথেরান আমি মূল পোস্টার নই, তবে আমি উত্তরটিতে আগ্রহী। অনুগ্রহের জন্য আমি এমন কিছু কোড খুঁজছি (এমনকি ব্যবহার করে nltk) যা আমাকে "হ্যালো ওয়ার্ল্ড" মেশিন লার্নিং টাস্ক দিয়ে সঠিক দিক থেকে শুরু করতে সহায়তা করতে পারে। আপেল (ইনক) বনাম আপেল (ফল) একটি নিখুঁত কার্যভার বলে মনে হচ্ছে।
রায়ান

3

LibShortText ব্যবহার করুন । এই পাইথন ইউটিলিটিটি ইতিমধ্যে সংক্ষিপ্ত পাঠ্য শ্রেণীবদ্ধকরণের কাজগুলির জন্য সুর করা হয়েছে এবং এটি ভালভাবে কাজ করে। সর্বাধিক আপনাকে যা করতে হবে তা হ'ল পতাকাগুলির সেরা সংমিশ্রণটি চয়ন করার জন্য একটি লুপ লিখতে হয়। আমি এটি ইমেলগুলিতে তত্ত্বাবধানে স্পিচ অ্যাক্টের শ্রেণিবদ্ধকরণ করতে ব্যবহার করেছি এবং ফলাফলগুলি 95-97% অবধি সঠিক ছিল (5 গুণ ক্রস বৈধকরণের সময়!)।

এবং এটি এলআইবিএসভিএম এবং লিবলাইনআর এর নির্মাতাদের কাছ থেকে এসেছে যার সাপোর্ট ভেক্টর মেশিন (এসভিএম) বাস্তবায়ন স্কলার এবং ক্র্যানে ব্যবহৃত হয়, তাই আপনি যুক্তিসঙ্গতভাবে আশ্বস্ত হতে পারেন যে তাদের বাস্তবায়ন বগি নয়।


2

আপেল (ফল) থেকে অ্যাপল ইনক (সংস্থাকে) আলাদা করার জন্য একটি এআই ফিল্টার তৈরি করুন । যেহেতু এটি টুইটগুলি হ'ল, আপনার প্রশিক্ষণের সেটটি 140 টি ক্ষেত্রের ভেক্টরের সাথে সংজ্ঞায়িত করুন, প্রতিটি ক্ষেত্রটি অক্ষরে অক্ষরে অক্ষরে অক্ষরে এক্স (0 থেকে 139) রয়েছে et টুইটটি যদি ছোট হয়, কেবল ফাঁকা হওয়ার জন্য একটি মান দিন।

তারপরে একটি ভাল নির্ভুলতা পেতে (আপনার স্বাদের সাপেক্ষে) যথেষ্ট পরিমাণে প্রশিক্ষণ তৈরি করুন। প্রতিটি টুইটকে ফলাফলের মান নির্ধারণ করুন, একটি অ্যাপল ইনক টুইট 1 পেয়েছে (সত্য) এবং একটি আপেল টুইট (ফল) পেয়েছে 0। এটি একটি লজিস্টিক রিগ্রেশন তত্ত্বাবধানের শিক্ষার ক্ষেত্রে হবে ।

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

আমি পাইথন জানি না , সুতরাং আমি এর জন্য কোডটি লিখতে পারি না, তবে আপনি যদি মেশিন লার্নিংয়ের যুক্তি এবং তত্ত্বের জন্য আরও সময় নেন তবে আপনি যে ক্লাসটি অনুসরণ করছেন তা আপনি দেখতে চাইতে পারেন।

অ্যান্ড্রু এনজি দ্বারা কোর্সেরা কোর্স মেশিন লার্নিং চেষ্টা করুন । আপনি ম্যাটল্যাব বা অক্টাভে মেশিন লার্নিং শিখতে পারবেন তবে আপনি যদি বেসিকগুলি পেয়ে যান তবে আপনি সাধারণ গণিতটি (লজিস্টিক রিগ্রেশন সহজ) বুঝতে পারলে যে কোনও ভাষায় মেশিন লার্নিং লিখতে সক্ষম হবেন।

অর্থাত, কারও কাছ থেকে কোড পাওয়া আপনাকে মেশিন লার্নিং কোডে কী চলছে তা বুঝতে সক্ষম করবে না। আসলে কী চলছে তা দেখার জন্য আপনি এই বিষয়টিতে কয়েক ঘন্টা বিনিয়োগ করতে চাইতে পারেন।


ধন্যবাদ ফাওয়ার এমএল কীভাবে কাজ করে তা শিখতে - আমি এই সঠিক উদ্দেশ্যে এই "হ্যালো ওয়ার্ল্ড" এর কিছু কোডের জন্য আশা করছিলাম। আমি যদিও ক্লাসটি সন্ধান করব। ভাল লাগছে।
রায়ান

0

সত্তার স্বীকৃতি দেওয়ার পরামর্শ দেওয়া উত্তরগুলি এড়িয়ে যাওয়ার পরামর্শ দেব। কারণ এই টাস্কটি প্রথমে একটি পাঠ্য-শ্রেণিবদ্ধকরণ এবং সত্তার স্বীকৃতি দ্বিতীয় (আপনি সত্তার স্বীকৃতি ছাড়াই এটি করতে পারেন)।

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

আপনার যদি পর্যাপ্ত নমুনা থাকে তবে আপনার 1 দিনের মধ্যে একটি শালীন মডেল থাকতে পারে।


একই সময়ে, spaCyহয়েছে nerপাইপলাইন উপাদান, না এটা এই শ্রেণীবিভাগ জন্য উপকারী হবে? আমি ধরে নিলাম যে তাদের মডেলটি চিনতে পারে Apple(এটি বিশ্বের অন্যতম বৃহত্তম এবং সর্বাধিক পরিচিত সংস্থাগুলি) আপনি যে মডেলটি একদিনে নিয়ে আসতে পারেন তার চেয়ে অনেক ভাল।
সিজমন মাস্ককে

@ সাইজমন: NER সাহায্য করতে পারে বা নাও পারে। যেমনটি আমি বুঝতে পেরেছি, আপনি প্রধান শ্রেণিবদ্ধকরণ কার্যের বৈশিষ্ট্য হিসাবে নামযুক্ত সত্ত্বাগুলি (যে তারা পাঠ্যে উপস্থিত আছেন) ব্যবহার করতে চান। স্পষ্টতই, উচ্চ স্তরের অস্পষ্টতার কারণে NER এর 100% নির্ভুলতা থাকবে না। সুতরাং মূল শ্রেণিবদ্ধকরণ মডেল সিদ্ধান্ত নেবে যে কোন পরিস্থিতিতে এটি এই বৈশিষ্ট্যটিতে বিশ্বাস করবে। এটি পরিণত হতে পারে (আমি মনে করি এটি খুব সম্ভবত) যে একটি প্রাথমিক শ্রেণিবদ্ধকরণ মডেল NER মডেলের ফলাফলগুলিকে খুব কম ওজন দেবে। এবং এর অর্থ হ'ল আপনি NER এ সময় ব্যয় করবেন যা প্রায় (প্রায়) ব্যবহৃত হয় না।
দিম

আমি যা বোঝাতে চাইছিলাম তা নয়। spacy.Docপ্রতিটি পাঠ্য থেকে কেবল তৈরি করুন, তাদের এনআরএস দিয়ে পুনরাবৃত্তি করুন doc.entsএবং পরীক্ষা করুন যে কোনও এনইআর এর .textসমান বৈশিষ্ট্য আছে কিনা Apple। মজার সত্য, তাদের প্রথম উদাহরণটিতে অ্যাপল রয়েছে।
সিজমন মাস্ককে

এবং যদি কেউ কোনও মডেল তৈরি করতে চান, তবে সম্ভবত এটি আরএনএন / সিএনএন এবং এর মতো জড়িত থাকবে, সে অনুযায়ী তাদের টিউন করবে, আর্কিটেকচার, কোষের ধরণগুলি খুঁজে পাবে, আমি মনে করি না যে সহজ মডেলগুলি ছদ্মবেশ এবং প্রসঙ্গটি ভালভাবে পরিচালনা করবে। কেউ যদি আপনার জন্য ইতিমধ্যে এটি করে ফেলে থাকে তবে আপনার জীবনকে কেন সহজ করে তুলুন (আপনি যদি পথে কিছু শিখতে চান না)?
সিজমন মাস্ককে

@ সিজমনমাস্কেকে আপনার মডেলটি আরও জটিল এবং প্রশিক্ষণ দেওয়া আরও কঠিন। আপনার মডেলটি উল্লিখিত উদ্দেশ্যে কাজ করার জন্য আপনার কাছে কেবল একটি NE খুঁজে পাওয়া উচিত নয়, এটি একটি সঠিক জায়গায় (টোকেন) খুঁজে পাবেন। শ্রেণিবদ্ধকরণের মডেলটির সাথে আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি আপনার মূল লক্ষ্যটির জন্য মডেলটি অনুকূল করবেন - এটি অ্যাপল সংস্থা বা অ্যাপল ফল এটি চিহ্নিত করুন। প্রশিক্ষণের পক্ষে এটি সহজ এবং সম্ভবত এটি আরও সঠিক হবে।
দিম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.