অজগরটির জন্য কি বাক্সের বাইরে খুব ভাল ভাষার মডেল রয়েছে?


11

আমি একটি অ্যাপ্লিকেশন প্রোটোটাইপ করছি এবং কিছু উত্পন্ন বাক্যগুলিতে বিভ্রান্তি গণনা করতে আমার একটি ভাষা মডেল প্রয়োজন।

অজগরটিতে কি আমি সহজেই ব্যবহার করতে পারি এমন কোনও প্রশিক্ষিত ভাষার মডেল রয়েছে? কিছু সাধারণ মত

model = LanguageModel('en')
p1 = model.perplexity('This is a well constructed sentence')
p2 = model.perplexity('Bunny lamp robert junior pancake')
assert p1 < p2

আমি কিছু ফ্রেমওয়ার্ক দেখেছি কিন্তু আমি যা চাই তা পাইনি। আমি জানি আমি এর মতো কিছু ব্যবহার করতে পারি:

from nltk.model.ngram import NgramModel
lm = NgramModel(3, brown.words(categories='news'))

এটি ব্রাউন করপাসে একটি ভাল টিউরিং সম্ভাব্যতা বিতরণ ব্যবহার করে তবে আমি 1 বি শব্দগুলির ডেটাসেটের মতো কিছু বড় ডেটাসেটের জন্য ভাল-রচিত মডেলটি খুঁজছিলাম। একটি সাধারণ ডোমেনের ফলাফলগুলিতে আমি আসলে বিশ্বাস করতে পারি এমন কিছু (কেবলমাত্র সংবাদ নয়)

python  nlp  language-model  r  statistics  linear-regression  machine-learning  classification  random-forest  xgboost  python  sampling  data-mining  orange  predictive-modeling  recommender-system  statistics  dimensionality-reduction  pca  machine-learning  python  deep-learning  keras  reinforcement-learning  neural-network  image-classification  r  dplyr  deep-learning  keras  tensorflow  lstm  dropout  machine-learning  sampling  categorical-data  data-imputation  machine-learning  deep-learning  machine-learning-model  dropout  deep-network  pandas  data-cleaning  data-science-model  aggregation  python  neural-network  reinforcement-learning  policy-gradients  r  dataframe  dataset  statistics  prediction  forecasting  r  k-means  python  scikit-learn  labels  python  orange  cloud-computing  machine-learning  neural-network  deep-learning  rnn  recurrent-neural-net  logistic-regression  missing-data  deep-learning  autoencoder  apache-hadoop  time-series  data  preprocessing  classification  predictive-modeling  time-series  machine-learning  python  feature-selection  autoencoder  deep-learning  keras  tensorflow  lstm  word-embeddings  predictive-modeling  prediction  machine-learning-model  machine-learning  classification  binary  theory  machine-learning  neural-network  time-series  lstm  rnn  neural-network  deep-learning  keras  tensorflow  convnet  computer-vision 


ওয়েল এটি মোটেই সহজে ব্যবহারযোগ্য নয় তবে এটি কিছু। ধন্যবাদ :)
ফ্রেড

এটি একটি প্রাক-প্রশিক্ষিত মডেল যা আপনি কেবল ডাউনলোড এবং চালাতে পারেন, এবং আপনার মনে হয় যে এটি "সহজেই ব্যবহারযোগ্য নয়" ...
ব্যবহারকারী12075

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

আপনি গুগল চেষ্টা করেছেন? আমি শুনেছি তারা মোটামুটি ডেটা পেয়েছে :) আপনার ঠিক পরে মেট্রিক রয়েছে কিনা তা নিশ্চিত নন। cloud.google.com/n Natural
language/

উত্তর:


5

SpaCy প্যাকেজ অনেক হয়েছে ভাষা মডেলের তালিম বেশী সহ, প্রচলিত ক্রল

প্রাকৃতিক ভাষা প্রসেসিং (এনএলপি) এর ভাষা মডেলের একটি নির্দিষ্ট অর্থ রয়েছে। একটি ভাষা মডেল হ'ল টোকেনের ক্রমগুলির উপর সম্ভাব্যতা বন্টন। টোকেনগুলির একটি নির্দিষ্ট অনুক্রম দেওয়া, মডেলটি সেই ক্রমের উপস্থিতির সম্ভাব্যতা নির্ধারণ করতে পারে। স্পাইসির ভাষার মডেলগুলিতে কেবল সম্ভাবনার বন্টন ছাড়াও আরও কিছু অন্তর্ভুক্ত রয়েছে।

স্পাইসি প্যাকেজটি ইনস্টল করা দরকার এবং ভাষা মডেলগুলি ডাউনলোড করা দরকার:

$ pip install spacy 
$ python -m spacy download en

তারপরে ভাষার মডেলগুলি পাইথনের কয়েকটি লাইন ব্যবহার করতে পারে:

>>> import spacy
>>> nlp = spacy.load('en')

প্রদত্ত মডেল এবং টোকেনের জন্য, টোকেনের শব্দের ধরণের একটি স্মুটেড লগ সম্ভাব্যতা অনুমানের সাথে পাওয়া যাবে: token.probবৈশিষ্ট্যটি।


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

Lad খুশি আপনি এমন কিছু খুঁজে পেয়েছেন যা আপনার পক্ষে কাজ করে।
ব্রায়ান স্পিয়ারিং

আবার .. এটি কেবলমাত্র যদি আপনি বড় ইংলিশ মডেলটি ডাউনলোড করেন
ফ্রেড

6

আমি মনে করি গৃহীত উত্তরটি ভুল।

টোকেন.প্রব হ'ল লগ-প্রোব হ'ল টোকেনটি একটি বিশেষ ধরণের being আমি অনুমান করছি 'টাইপ' বলতে পস-ট্যাগ বা নামকৃত সত্তার প্রকারের মতো বোঝায় (এটি স্পেসির ডকুমেন্টেশন থেকে পরিষ্কার নয়) এবং স্কোরটি সমস্ত ধরণের জায়গার চেয়ে একটি আস্থা পরিমাপ।

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

এই রেপোতে নিউআরএল নেটওয়ার্কের প্রাক-প্রশিক্ষিত ওজন সহ বিইআরটি (একটি অত্যাধুনিক মডেল) ব্যবহারের বিষয়ে সুন্দর ডকুমেন্টেশন রয়েছে,

আমি মনে করি এপিআই আপনাকে সরাসরি বিভ্রান্তি দেয় না তবে প্রতিটি টোকেনের জন্য খুব সহজেই আপনার সম্ভাবনা স্কোর পেতে সক্ষম হওয়া উচিত ( https://github.com/huggingface/pytorch- ব্যাখ্যা rained-BERT# usage )।


4

আমি এও মনে করি যে @ নুব 333 ব্যাখ্যা করেছেন যে কারণে প্রথম উত্তরটি ভুল।

তবে বার্টকে ভাষার মডেল হিসাবে বাক্সের বাইরে ব্যবহার করা যাবে না। বার্ট আপনাকে দেয় p(word|context(both left and right) )এবং আপনি যা চান তা গণনা করা p(word|previous tokens(only left contex))। লেখক এখানে ব্যাখ্যা করেছেন: https://github.com/google-research/bert/issues/35 কেন আপনি এটি এলএম হিসাবে ব্যবহার করতে পারবেন না।

তবে আপনি বার্টটিকে অভিযোজিত করতে এবং এটি এখানে বর্ণিত হিসাবে ভাষা মডেল হিসাবে ব্যবহার করতে পারেন: https://arxiv.org/pdf/1902.04094.pdf

তবে আপনি একই রেপো থেকে ওপেন এইআই জিপিটি বা জিপিটি -2 প্রি-টেইন মডেলগুলি ব্যবহার করতে পারেন ( https://github.com/huggingface/pytorch- ব্যাখ্যা rained-BERT )

আপনি এখানে জিপিটি মডেল ( https://github.com/huggingface/pytorch- ব্যাখ্যা rained-BERT/issues/473 ) ব্যবহার করে বিশৃঙ্খলাটি কীভাবে গণনা করতে পারেন তা এখানে রয়েছে is

import math
from pytorch_pretrained_bert import OpenAIGPTTokenizer, OpenAIGPTModel, OpenAIGPTLMHeadModel
# Load pre-trained model (weights)
model = OpenAIGPTLMHeadModel.from_pretrained('openai-gpt')
model.eval()
# Load pre-trained model tokenizer (vocabulary)
tokenizer = OpenAIGPTTokenizer.from_pretrained('openai-gpt')

def score(sentence):
    tokenize_input = tokenizer.tokenize(sentence)
    tensor_input = torch.tensor([tokenizer.convert_tokens_to_ids(tokenize_input)])
    loss=model(tensor_input, lm_labels=tensor_input)
    return math.exp(loss)


a=['there is a book on the desk',
                'there is a plane on the desk',
                        'there is a book in the desk']
print([score(i) for i in a])
21.31652459381952, 61.45907380241148, 26.24923942649312
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.