well-Farasa工具箱的Python包装器

farasap的Python项目详细描述


目录

Open In Colab

DownloadsLicensePythonVersionPyPiVersion

免责声明

This is a Pyhton API wrapper for farasa [http://qatsdemo.cloudapp.net/farasa/] toolkit. Although this work is licsenced under MIT, the original work(the toolkit) is strictly premitted for research purposes only. For any commercial uses, please contact the toolkit creators[http://qatsdemo.cloudapp.net/farasa/].

简介

Farasa是一个阿拉伯语NLP工具包,用于以下任务:

  1. 细分市场。在
  2. 堵塞。在
  3. 命名实体记录(NER)。在
  4. 词性标注(词性标注)。在
  5. 变音。在

工具箱是用Java语言构建和编译的。想要在不使用这个库的情况下使用它的开发人员可以直接从他们的代码中调用二进制文件。在

由于Pyhton是一种通用语言,并且在许多NLP任务中非常流行,因此从代码中自动调用工具箱将非常方便。这就是这个包装的地方。在

安装

pip install farasapy

如何使用

An interactive Google colab code of the library can be reached from here [https://colab.research.google.com/drive/1xjzYwmfAszNzfR6Z2lSQi3nKYcjarXAW?usp=sharing].

一句重要的话

  • 该库是JavaJAR的一个warpper,它要求在系统中安装Java,并在路径。同时,也不建议使用低于Java1.7的版本。在

  • 有些二进制文件是强制性的重!在

概述

faraspy在不同的类中包装和维护工具箱的所有api,每个类都在单独的文件中。您需要从其文件导入感兴趣的类,如下所示:

^{pr2}$

现在,如果您是第一次使用这个库,那么库需要先下载farasa工具包binareis。你不需要担心任何想法。每当您实例化它的任何类的对象时,该库都会首先检查二进制文件,如果不存在则下载它们。这是从FarasaStemmer实例化一个对象的示例,用于首次使用库。在

stemmer = FarasaStemmer()
perform system check...
check java version...
Your java version is 1.8 which is compatiple with Farasa
check toolkit binaries...
some binaries are not existed..
downloading zipped binaries...
100%|███████████████████████████████████████| 200M/200M [02:39<00:00, 1.26MiB/s]
extracting...
toolkit binaries are downloaded and extracted.
Dependencies seem to be satisfied..
task [STEM] is initialized in STANDALONE mode...

让我们stem下面的例子:

sample =\ 
''' 
يُشار إلى أن اللغة العربية يتحدثها أكثر من 422 مليون نسمة ويتوزع متحدثوها
 في المنطقة المعروفة باسم الوطن العربي بالإضافة إلى العديد من المناطق ال
أخرى المجاورة مثل الأهواز وتركيا وتشاد والسنغال وإريتريا وغيرها.وهي اللغ
ة الرابعة من لغات منظمة الأمم المتحدة الرسمية الست. 
'''
stemmed_text = stemmer.stem(sample)                                     
print(stemmed_text)
'أشار إلى أن لغة عربي تحدث أكثر من 422 مليون نسمة توزع متحدثوها في منطقة معروف اسم وطن عربي إضافة إلى عديد من منطقة آخر مجاور مثل أهواز تركيا تشاد سنغال أريتريا غير . هي لغة رابع من لغة منظمة أمة متحد رسمي ست .'

您可能会注意到,对象实例化的最后一行声明对象是在STANDALONE模式下实例化的。faraspy和工具箱二进制文件一样,可以在两种不同的模式下运行:InteractiveStandalone。在

独立模式

在独立模式下,实例化对象每次执行任务时都会调用二进制文件。它将把输入文本放在一个临时文件中,用这个临时文件执行二进制文件,最后从另一个临时文件中提取输出。任务结束后,garbache会收集这些临时文件。请注意,某些二进制文件,,如发音符号,可能需要很长时间才能启动。因此,当您有长文本并且只想执行一次时,最好使用此选项。在

交互模式

在交互模式下,对象将在实例化后运行二进制文件。然后以交互方式捕获输入的文本。但是,用户应该小心不要放大行,因为输出可能与shell中的输出不一样。如果不需要这些类型的对象来避免代码中的任何意外行为,则最好使用my_obj.terminate()终止{em1}$terminate。在

为了获得最佳实践,请使用INTERACTIVE模式,其中输入文本很小,需要多次执行任务。但是,STANDALONE模式最适合于大型输入文本,其中任务只需完成一次。在

要使用交互模式,只需将interactive=True选项传递给对象构造函数。在

下面是一个以交互方式运行的分段API的示例。在

segmenter = FarasaSegmenter(interactive=True)
perform system check...
check java version...
Your java version is 1.8 which is compatiple with Farasa 
check toolkit binaries...
Dependencies seem to be satisfied..
/path/to/the/library/farasa/__base.py:40: UserWarning: Be careful with large lines as they may break on interactive mode. You may switch to Standalone mode for such cases.
warnings.warn("Be careful with large lines as they may break on interactive mode. You may switch to Standalone mode for such cases.")
initializing [SEGMENT] task in INTERACTIVE mode...
task [SEGMENT] is initialized interactively.


segmented = segmenter.segment(sample)
print(segmented)
'يشار إلى أن ال+لغ+ة ال+عربي+ة يتحدث+ها أكثر من 422 مليون نسم+ة و+يتوزع متحدثوها في ال+منطق+ة ال+معروف+ة باسم ال+وطن ال+عربي ب+ال+إضاف+ة إلى ال+عديد من ال+مناطق ال+أخرى ال+مجاور+ة مثل ال+أهواز و+تركيا و+تشاد و+ال+سنغال و+إريتريا و+غير+ها . و+هي ال+لغ+ة ال+رابع+ة من لغ+ات منظم+ة ال+أمم ال+متحد+ة ال+رسمي+ة ال+ست .'

贡献

  • 取消代码的荣誉归@Wissam Antoun所有[https://github.com/WissamAntoun/Farasa_Desegmenter]在他的仓库里[https://github.com/WissamAntoun/Farasa_Desegmenter]. 在

想引用吗?在

您可以从这里找到站点的发布列表:http://qatsdemo.cloudapp.net/farasa/。在

有用的URL

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

推荐PyPI第三方库


热门话题
java如何在安卓中检查internet和服务器(url)的可用性   java比较多个日历,并使用开始和结束查找哪个更接近运行,或者哪个现在处于活动状态   java对于来自不同类的引用是否存在动态对象类型?   java如果对象在ArrayList中,如何更改它?   lambda Java 8模式匹配?   java Logstash从Json中的消息字段提取字段   java使用Spring集成/JCraft JSch在SFTP服务器上内部复制文件   当线程启动时,java实现Runnable Run()   java我如何使用扫描仪库并在安卓应用程序的后台使用嵌入式扫描仪进行扫描?   java无法使用customformatter   java使用html中的FlyingSaucer在PDF中呈现嵌入图像   spring在使用AWS Java SDK获取CloudWatch指标时清空数据点集?   writeValue方法中的java Jackson 2.0序列化配置   java隐藏带向上滑动动画的安卓工具栏   swing覆盖Java的默认外观   Asynctask中的java解析json,不需要结果   java哈希集的最大大小似乎是961   java如何使用spring引导执行器分别捕获给定REST端点的GET、POST和PUT方法的指标   java是否依赖于DateTimeFormatter操作系统?