BNLP是一个面向孟加拉语的自然语言处理工具包

bnlp-toolkit的Python项目详细描述


孟加拉语自然语言处理

BNLP是一个面向孟加拉语的自然语言处理工具包。此工具将帮助您tokenize孟加拉语文本嵌入孟加拉语单词孟加拉语词性标记孟加拉语名称实体识别构造神经模型。在

NB:任何在其论文中引用此工具的研究人员请让我们知道,我们将在此处包含论文链接

安装

PIP安装程序(python3.5、3.6、3.7测试正常)

pip install bnlp_toolkit

本地安装程序

^{pr2}$

预训练模型

下载链接

标记化

  • Basic标记器

    frombnlpimportBasicTokenizerbasic_tokenizer=BasicTokenizer()raw_text="আমি বাংলায় গান গাই।"tokens=basic_tokenizer.tokenize(raw_text)print(tokens)# output: ["আমি", "বাংলায়", "গান", "গাই", "।"]
  • NLTK标记化

    frombnlpimportNLTKTokenizerbnltk=NLTKTokenizer()text="আমি ভাত খাই। সে বাজারে যায়। তিনি কি সত্যিই ভালো মানুষ?"word_tokens=bnltk.word_tokenize(text)sentence_tokens=bnltk.sentence_tokenize(text)print(word_tokens)print(sentence_tokens)# output# word_token: ["আমি", "ভাত", "খাই", "।", "সে", "বাজারে", "যায়", "।", "তিনি", "কি", "সত্যিই", "ভালো", "মানুষ", "?"]# sentence_token: ["আমি ভাত খাই।", "সে বাজারে যায়।", "তিনি কি সত্যিই ভালো মানুষ?"]
  • Bengali SentencePiece标记化

    • 使用训练模型的标记化
      frombnlpimportSentencepieceTokenizerbsp=SentencepieceTokenizer()model_path="./model/bn_spm.model"input_text="আমি ভাত খাই। সে বাজারে যায়।"tokens=bsp.tokenize(model_path,input_text)print(tokens)text2id=bsp.text2id(model_path,input_text)print(text2id)id2text=bsp.id2text(model_path,text2id)print(id2text)
    • 训练片段
      frombnlpimportSentencepieceTokenizerbsp=SentencepieceTokenizer()data="test.txt"model_prefix="test"vocab_size=5bsp.train(data,model_prefix,vocab_size)

文字嵌入

  • 孟加拉语Word2Vec

    • 利用预应变模型生成矢量

      frombnlpimportBengaliWord2Vecbwv=BengaliWord2Vec()model_path="bengali_word2vec.model"word='আমার'vector=bwv.generate_word_vector(model_path,word)print(vector.shape)print(vector)
    • 用预训练模型找出最相似的词

      frombnlpimportBengaliWord2Vecbwv=BengaliWord2Vec()model_path="bengali_word2vec.model"word='গ্রাম'similar=bwv.most_similar(model_path,word)print(similar)
    • 用你自己的数据训练孟加拉语Word2Vec

      frombnlpimportBengaliWord2Vecbwv=BengaliWord2Vec()data_file="sample.txt"model_name="test_model.model"vector_name="test_vector.vector"bwv.train(data_file,model_name,vector_name)
  • {str{1孟加拉文

    要使用fasttext,您需要通过pip install fasttext==0.9.2手动安装fasttext

    注意:fasttext不能在windows中工作,它只在linux中工作

    • 利用预训练模型生成向量

      frombnlp.embedding.fasttextimportBengaliFasttextbft=BengaliFasttext()word="গ্রাম"model_path="bengali_fasttext_wiki.bin"word_vector=bft.generate_word_vector(model_path,word)print(word_vector.shape)print(word_vector)
    • 孟加拉语快速文本模型

      frombnlp.embedding.fasttextimportBengaliFasttextbft=BengaliFasttext()data="sample.txt"model_name="saved_model.bin"epoch=50bft.train(data,model_name,epoch)
  • 孟加拉语手套词向量

    我们用孟加拉语数据(wiki+新闻文章)训练手套模型,并发布孟加拉手套词向量 您可以下载它并将其用于不同的机器学习目的。在

    frombnlpimportBengaliGloveglove_path="bn_glove.39M.100d.txt"word="গ্রাম"bng=BengaliGlove()res=bng.closest_word(glove_path,word)print(res)vec=bng.word2vec(glove_path,word)print(vec)

孟加拉语词性标注

  • Bengali CRF POS Tagging

    • 使用预训练模型查找Pos标签

      frombnlpimportPOSbn_pos=POS()model_path="model/bn_pos.pkl"text="আমি ভাত খাই।"res=bn_pos.tag(model_path,text)print(res)# [('আমি', 'PPR'), ('ভাত', 'NC'), ('খাই', 'VM'), ('।', 'PU')]
    • 列车POS标签模型

      frombnlpimportPOSbn_pos=POS()model_name="pos_model.pkl"tagged_sentences=[[('রপ্তানি','JJ'),('দ্রব্য','NC'),('-','PU'),('তাজা','JJ'),('ও','CCD'),('শুকনা','JJ'),('ফল','NC'),(',','PU'),('আফিম','NC'),(',','PU'),('পশুচর্ম','NC'),('ও','CCD'),('পশম','NC'),('এবং','CCD'),('কার্পেট','NC'),('৷','PU')],[('মাটি','NC'),('থেকে','PP'),('বড়জোর','JQ'),('চার','JQ'),('পাঁচ','JQ'),('ফুট','CCL'),('উঁচু','JJ'),('হবে','VM'),('৷','PU')]]bn_pos.train(model_name,tagged_sentences)

孟加拉纳尔

  • 孟加拉语CRF NER

    • 使用预训练模型查找NER标记

      frombnlpimportNERbn_ner=NER()model_path="model/bn_ner.pkl"text="সে ঢাকায় থাকে।"result=bn_ner.tag(model_path,text)print(result)# [('সে', 'O'), ('ঢাকায়', 'S-LOC'), ('থাকে', 'O')]
    • 列车内线标签模型

      frombnlpimportNERbn_ner=NER()model_name="ner_model.pkl"tagged_sentences=[[('ত্রাণ','O'),('ও','O'),('সমাজকল্যাণ','O'),('সম্পাদক','S-PER'),('সুজিত','B-PER'),('রায়','I-PER'),('নন্দী','E-PER'),('প্রমুখ','O'),('সংবাদ','O'),('সম্মেলনে','O'),('উপস্থিত','O'),('ছিলেন','O')],[('ত্রাণ','O'),('ও','O'),('সমাজকল্যাণ','O'),('সম্পাদক','S-PER'),('সুজিত','B-PER'),('রায়','I-PER'),('নন্দী','E-PER'),('প্রমুখ','O'),('সংবাদ','O'),('সম্মেলনে','O'),('উপস্থিত','O'),('ছিলেন','O')],[('ত্রাণ','O'),('ও','O'),('সমাজকল্যাণ','O'),('সম্পাদক','S-PER'),('সুজিত','B-PER'),('রায়','I-PER'),('নন্দী','E-PER'),('প্রমুখ','O'),('সংবাদ','O'),('সম্মেলনে','O'),('উপস্থিত','O'),('ছিলেন','O')]]bn_ner.train(model_name,tagged_sentences)

孟加拉语语料库类

  • 停止语和标点符号

    frombnlp.corpusimportstopwords,punctuationsstopwords=stopwords()print(stopwords)print(punctuations)
  • 从文本中删除非索引字

    frombnlp.corpusimportstopwordsfrombnlp.corpus.utilimportremove_stopwordsstopwords=stopwords()raw_text='আমি ভাত খাই।'result=remove_stopwords(raw_text,stopwords)print(result)# ['ভাত', 'খাই', '।']

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java与Groovy正则表达式匹配混淆   java控制台未定义为JSNI   主目录中的java指针异常   java如何获取hashmap中的arrayList的大小   ApachePOI用于文本,Java代码中的word doc(.docx)中没有进行追加   Ruby对象到Java对象   JavaSpringJPA哈希集只返回一个值   Java在执行由配置了精确类路径参数的mavenjarpluin生成的可执行jar时无法找到依赖项   java我试图在画布上写一个文本,但什么也没发生   java HTTP 404源服务器找不到目标资源的当前表示形式,或者不愿意透露存在该表示形式。不起作用   java提取小数点后的最后一个数字   oop Java:无法访问对象的元素   PHP URL中RecyclerView中的java句柄空异常   不调用OnCreateViewHolder的java Update RecyclerView适配器项