openjournals / joss-reviews

Reviews for the Journal of Open Source Software
Creative Commons Zero v1.0 Universal
721 stars 38 forks source link

[REVIEW]: PyArabic: A Python package for Arabic text #4886

Closed editorialbot closed 1 year ago

editorialbot commented 2 years ago

Submitting author: !--author-handle-->@linuxscout<!--end-author-handle-- (Taha Zerrouki) Repository: https://github.com/linuxscout/pyarabic Branch with paper.md (empty if default branch): paper Version: 0.6.16 Editor: !--editor-->@ajstewartlang<!--end-editor-- Reviewers: @amitkumarj441, @kikarimullah Archive: 10.5281/zenodo.7833909

Status

status

Status badge code:

HTML: <a href="https://joss.theoj.org/papers/88253a3d82cca64ee32e88fc8925991b"><img src="https://joss.theoj.org/papers/88253a3d82cca64ee32e88fc8925991b/status.svg"></a>
Markdown: [![status](https://joss.theoj.org/papers/88253a3d82cca64ee32e88fc8925991b/status.svg)](https://joss.theoj.org/papers/88253a3d82cca64ee32e88fc8925991b)

Reviewers and authors:

Please avoid lengthy details of difficulties in the review thread. Instead, please create a new issue in the target repository and link to those issues (especially acceptance-blockers) by leaving comments in the review thread below. (For completists: if the target issue tracker is also on GitHub, linking the review thread in the issue or vice versa will create corresponding breadcrumb trails in the link target.)

Reviewer instructions & questions

@amitkumarj441 & @kikarimullah, your review will be checklist based. Each of you will have a separate checklist that you should update when carrying out your review. First of all you need to run this command in a separate comment to create the checklist:

@editorialbot generate my checklist

The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @ajstewartlang know.

โœจ Please start on your review when you are able, and be sure to complete your review in the next six weeks, at the very latest โœจ

Checklists

๐Ÿ“ Checklist for @amitkumarj441

๐Ÿ“ Checklist for @kikarimullah

editorialbot commented 2 years ago

Hello humans, I'm @editorialbot, a robot that can help you with some common editorial tasks.

For a list of things I can do to help you, just type:

@editorialbot commands

For example, to regenerate the paper pdf after making changes in the paper's md or bib files, type:

@editorialbot generate pdf
editorialbot commented 2 years ago
Software report:

github.com/AlDanial/cloc v 1.88  T=0.17 s (219.1 files/s, 129013.7 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Python                          24            717          14943           3658
Markdown                         3            193              0            689
reStructuredText                 3            243            298            415
TeX                              1             61              0            409
YAML                             3              4              5             50
make                             2             11             14             40
DOS Batch                        1              8              1             26
-------------------------------------------------------------------------------
SUM:                            37           1237          15261           5287
-------------------------------------------------------------------------------

gitinspector failed to run statistical information for the repository
editorialbot commented 2 years ago

Wordcount for paper.md is 656

editorialbot commented 2 years ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

editorialbot commented 2 years ago
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.5121/ijdkp.2016.6602 is OK
- 10.1177/0165551519849516 is OK
- 10.1109/wits.2019.8723864 is OK
- 10.1016/j.procs.2017.10.111 is OK
- 10.1117/12.2242187 is OK
- 10.1109/icics52457.2021.9464602 is OK
- 10.1007/978-3-030-33582-3_1 is OK
- 10.1109/ICICS52457.2021.9464614 is OK
- 10.1057/s41599-021-00798-7 is OK
- 10.14569/IJACSA.2022.0130751 is OK
- 10.14569/ijacsa.2020.0111045 is OK
- 10.1007/978-981-15-0947-6_76 is OK
- 10.1109/fmec.2019.8795331 is OK
- 10.1109/icics52457.2021.9464566 is OK
- 10.1007/978-3-030-36778-7_22 is OK
- 10.1109/ICICS52457.2021.9464531 is OK
- 10.48550/ARXIV.1910.00421 is OK
- 10.18653/v1/2021.eacl-main.204 is OK
- 10.1109/icics52457.2021.9464605 is OK
- 10.18280/ria.340111 is OK
- 10.3390/app12094188 is OK
- 10.11591/ijeecs.v19.i2.pp1010-1020 is OK
- 10.1109/iciev.2019.8858561 is OK
- 10.11591/ijece.v12i4.pp4195-4205 is OK
- 10.1109/icics55353.2022.9811149 is OK
- 10.1016/j.knosys.2022.108180 is OK
- 10.1007/s13369-021-05383-3 is OK
- 10.3390/bdcc6020048 is OK
- 10.1177/14604582211070998 is OK

MISSING DOIs

- None

INVALID DOIs

- None
amitkumarj441 commented 1 year ago

Review checklist for @amitkumarj441

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

ajstewartlang commented 1 year ago

@editorialbot add @VenkteshV as reviewer

editorialbot commented 1 year ago

@VenkteshV added to the reviewers list!

kikarimullah commented 1 year ago

Review checklist for @kikarimullah

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

kikarimullah commented 1 year ago

@editorialbot command

editorialbot commented 1 year ago

I'm sorry human, I don't understand that. You can see what commands I support by typing:

@editorialbot commands

kikarimullah commented 1 year ago

@editorialbot commands

editorialbot commented 1 year ago

Hello @kikarimullah, here are the things you can ask me to do:


# List all available commands
@editorialbot commands

# Get a list of all editors's GitHub handles
@editorialbot list editors

# Check the references of the paper for missing DOIs
@editorialbot check references

# Perform checks on the repository
@editorialbot check repository

# Adds a checklist for the reviewer using this command
@editorialbot generate my checklist

# Set a value for branch
@editorialbot set joss-paper as branch

# Generates the pdf paper
@editorialbot generate pdf

# Generates a LaTeX preprint file
@editorialbot generate preprint

# Get a link to the complete list of reviewers
@editorialbot list reviewers
kikarimullah commented 1 year ago

@linuxscout

State of the field: Do the authors describe how this software compares to other commonly-used packages?

I think it would be worthwhile having a separate section in the paper where you address other software packages that are out there. There are many Arabic tokenizers, for example, and a lot of research has been done comparing them. It would be worth saying briefly how yours compares to them. See, for example, the many publications by Nizar Habash and his collaborators. In the documentation, you also credit Khaled Alshamaa PHP Project. Perhaps you could say a bit more about how PyArabic relates to this project in the paper?

kikarimullah commented 1 year ago

@linxscout:

Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)? Lines 13-14: "Before using machine learning algorithms, the library becomes even more important for text processing." Sentence is unclear.

Line 21: "Text tokenization into tokens" Redundant? Line 32: "The library can be found at PyPi.org index." Make this a footnote after the first sentence of section Statement of Need. Line 41: "arabic" Arabic (capitalise) Lines 34-42 Please consistently capitalise after colon. Line 45: "In this work, we release a set of tools" Does 'this' refer to your PhD research or to this manuscript under review? Can you please disambiguate? Lines 60-70 Please consistently capitalise in lists.

linuxscout commented 1 year ago

@editorialbot generate pdf

editorialbot commented 1 year ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

linuxscout commented 1 year ago

@kikarimullah Thanks for you comments, I fix them.

@linxscout:

Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)? Lines 13-14: "Before using machine learning algorithms, the library becomes even more important for text processing." Sentence is unclear.

Fixed as: For years, researchers and developers who worked on machine learning algorithms for natural language processing have used the library for Arabic text preprocessing and cleaning. The library becomes more important for machine learning.

Line 21: "Text tokenization into tokens" Redundant?

Fixed

Line 32: "The library can be found at PyPi.org index." Make this a footnote after the first sentence of section Statement of Need.

Fixed

Line 41: "arabic" Arabic (capitalise) Fixed

Lines 34-42 Please consistently capitalise after colon.

Fixed

Line 45: "In this work, we release a set of tools" Does 'this' refer to your PhD research or to this manuscript under review? Can you please disambiguate?

Fixed as: in PhD word,

Lines 60-70 Please consistently capitalise in lists.

Fixed.

linuxscout commented 1 year ago

@editorialbot generate pdf

editorialbot commented 1 year ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

linuxscout commented 1 year ago

@linuxscout

State of the field: Do the authors describe how this software compares to other commonly-used packages?

I think it would be worthwhile having a separate section in the paper where you address other software packages that are out there. There are many Arabic tokenizers, for example, and a lot of research has been done comparing them. It would be worth saying briefly how yours compares to them. See, for example, the many publications by Nizar Habash and his collaborators. In the documentation, you also credit Khaled Alshamaa PHP Project. Perhaps you could say a bit more about how PyArabic relates to this project in the paper?

Hi @kikarimullah, I added this section into paper:

PyArabic was inspired by Ar-PHP[@ar-php], an Arabic library for the PHP programming language that provides basic routines for web developers. Then the two libraries grow together through collaborations, and they are inspired mutually by each other. Ar-PHP provides basic routines for PHP and MySQL databases and attempts to solve web development issues such as arabic glyph rendering; however, the Ar-PHP library also includes advanced modules such as sentiment analysis, muslim prayer times, and auto-summarize [@ar-php].

There are many dedicated frameworks for Arabic natural language processing, like MADAMIRA(Java) [@pasha2014madamira], FARASA(Java)[@abdelali2016farasa], CAMeL(Python) [@obeid-etal-2020-camel]. Many multilingual frameworks, however, such as NLTK (Python) [@loper2002nltk], Spacy (Python) [@vasiliev2020natural], and CLTK (Python) [@johnson2014:2014], only partially support Arabic.

In PyArabic, we focused on basic routines and build our library to be native and independent enough to be embedded in complex projects. This library was used in many projects and adopted by frameworks like CLTK[@johnson2014:2014], and has been inspired to build more specific libraries like TaKseem (a tokenization library for Arabic) [@tkseem2020] and Tankeeh (Arabic cleaning, normalization, and segmentation library) [@tnkeeh2020].

kikarimullah commented 1 year ago

@linuxscout

RE: DOCUMENTATION Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).

There are examples showing the input and output of the different functions. The examples are a bit contrived, however. Since this is an Arabic NLP tookkit, I wonder whether using larger text samples from naturally occurring texts (circa 10^2 or 10^3 words?), perhaps from Twitter, perhaps from Arabic news sites, perhaps from classical Arabic texts sourced from al-maktabah.org or from Maktaba Shamela?

This may be valuable in for those wanting to use the tokenization functions to generate frequency lists, for example.

This is a suggestion for consideration.

kikarimullah commented 1 year ago

@linuxscout

RE: DOCUMENTATION

Currently the documentation is inconsistently translated into English. Sometimes there is a brief translation, other times English translation is almost entirely absent. I'd recommend ensuring that English translations are consistently provided in some way (Khaled Alshamaa has separate Arabic and English sites for his repos). Consistent English translation will definitely widen the scope of potential users of the software.

This is a suggestion for your consideration.

kikarimullah commented 1 year ago

RE: DOCUMENTATION

There is a problem with the example for the function unshaping_text: Unshape a text: https://pyarabic.readthedocs.io/ar/latest/features.html#id7

Part of the first bayt of the poem is missing.

This is a suggestion for your consideration.

kikarimullah commented 1 year ago

@linuxscout

RE: SOFTWARE PAPER

The paper chiefly consists in a series of lists. As a way of strengthening the analytical aspect of the paper, I think you might add a few more lines of prose when you speak about (1) advanced projects on lines 43 - 56 and (2) lines 60 - 70 where you mention how the software is currently being used.

For (1) you could add a paragraph that gives an overall characterisation of how certain functions work in more advanced NLP software. Perhaps you could briefly discuss an example, say, of how Qutrub or Qalsadi depend on PyArabic libraries. For (2) you could discuss why, for example, PyArabic has been used so extensively in research on sentiment analysis.

kikarimullah commented 1 year ago

@editorialbot generate pdf

editorialbot commented 1 year ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

linuxscout commented 1 year ago

@linuxscout

RE: DOCUMENTATION Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).

There are examples showing the input and output of the different functions. The examples are a bit contrived, however. Since this is an Arabic NLP tookkit, I wonder whether using larger text samples from naturally occurring texts (circa 10^2 or 10^3 words?), perhaps from Twitter, perhaps from Arabic news sites, perhaps from classical Arabic texts sourced from al-maktabah.org or from Maktaba Shamela?

Examples in documentation are used as illustrations to show functionalities. The library is used to solve real world problems within other packages, like ours (Mishkal, Qutrub, and Qalsadi), which give us feedback to improve the pyarabic.In project Mishkal, for example, we overuse the strip_tashkeel function; profiling Mishkal programs led us to select the fastest algorithm for removing diacritics.

This may be valuable in for those wanting to use the tokenization functions to generate frequency lists, for example.

The tokenize fucntion has advanced options, It can be used with other conditions like (restrict Arabic, keep or remove numbers, exclude stop words ...etc).

For example , to remove tashkeel and filter out non-Arabic words, we use this code

>>> from pyarabic.araby import tokenize, is_arabicrange, strip_tashkeel
>>> text = u"ูุงุณู…ูŒ ุงู„ูƒู„ุจู ููŠ ุงู„ู„ุบุฉู ุงู„ุฅู†ุฌู„ูŠุฒูŠุฉ Dog ูˆุงุณู…ู ุงู„ุญู…ุงุฑู Donky"
>>> tokenize(text, conditions=is_arabicrange, morphs=strip_tashkeel)
        ['ุงุณู…', 'ุงู„ูƒู„ุจ', 'ููŠ', 'ุงู„ู„ุบุฉ', 'ุงู„ุฅู†ุฌู„ูŠุฒูŠุฉ', 'ูˆุงุณู…', 'ุงู„ุญู…ุงุฑ']

functions to generate frequency lists,

It can be done with Counter lib, after tokenization.

This is a suggestion for consideration.

linuxscout commented 1 year ago

@editorialbot generate pdf

editorialbot commented 1 year ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

linuxscout commented 1 year ago

Hi @kikarimullah,

RE: SOFTWARE PAPER

The paper chiefly consists in a series of lists. As a way of strengthening the analytical aspect of the paper, I think you might add a few more lines of prose when you speak about (1) advanced projects on lines 43 - 56 and (2) lines 60 - 70 where you mention how the software is currently being used.

For (1) you could add a paragraph that gives an overall characterisation of how certain functions work in more advanced NLP software. Perhaps you could briefly discuss an example, say, of how Qutrub or Qalsadi depend on PyArabic libraries.

done

For (2) you could discuss why, for example, PyArabic has been used so extensively in research on sentiment analysis.

I mention that PyArabic was created to aid researchers and developers in natural language processing tasks, particularly text preprocessing (tokenization, cleaning, normalization, strip diacritics). It has already appeared in several scientific publications. It is mentioned in:

ajstewartlang commented 1 year ago

:wave: @kikarimullah can I check you're now happy with the submission as it currently stands?

ajstewartlang commented 1 year ago

:wave: @amitkumarj441 and @VenkteshV can I check how your reviews are progressing please?

kikarimullah commented 1 year ago

@editorialbot generate pdf

kikarimullah commented 1 year ago

@editorialbot generate pdf

editorialbot commented 1 year ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

editorialbot commented 1 year ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

kikarimullah commented 1 year ago

@ajstewartlang the author has responded to all my queries and issues, both the mandatory and the optional. So I'm satisfied with the paper as it currently stands. Thanks.

ajstewartlang commented 1 year ago

:wave: @amitkumarj441 and @VenkteshV could I have an update please?

amitkumarj441 commented 1 year ago

๐Ÿ‘‹ @amitkumarj441 and @VenkteshV could I have an update please?

I am working on the review. I realised that the code licensing is GPLv3 in actual, though the link to license is broken on both GitHub (in both branches; paper/master) and PyPi. I would suggest fixing these links on both GitHub repo and PyPi meta.

linuxscout commented 1 year ago

I updated the broken link on Github, I will fix it on PyPi, for new release.

amitkumarj441 commented 1 year ago

@editorialbot check references

amitkumarj441 commented 1 year ago

I have tested this library functionalities and almost every features works with the python tests without a hitch. Though, there multiple folders for docs (doc and docs), keeping both would be okay as long as the main MANIFEST file contains include docs/* & include tests/*. Also, for mainstream documentation page: https://pyarabic.readthedocs.io/ar/latest/ for which the configuration file (.readthedocs.yml) is missing, including missing DOIs needs to be fixed.

I am happy to recommend the paper for publication at this point provided the above suggestions should be considered and hope that @linuxscout can provide their feedback soon.

editorialbot commented 1 year ago
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.5121/ijdkp.2016.6602 is OK
- 10.1177/0165551519849516 is OK
- 10.1109/wits.2019.8723864 is OK
- 10.1016/j.procs.2017.10.111 is OK
- 10.1117/12.2242187 is OK
- 10.1109/icics52457.2021.9464602 is OK
- 10.1007/978-3-030-33582-3_1 is OK
- 10.1109/ICICS52457.2021.9464614 is OK
- 10.1057/s41599-021-00798-7 is OK
- 10.14569/IJACSA.2022.0130751 is OK
- 10.14569/ijacsa.2020.0111045 is OK
- 10.1007/978-981-15-0947-6_76 is OK
- 10.1109/fmec.2019.8795331 is OK
- 10.1109/icics52457.2021.9464566 is OK
- 10.1007/978-3-030-36778-7_22 is OK
- 10.1109/ICICS52457.2021.9464531 is OK
- 10.48550/ARXIV.1910.00421 is OK
- 10.18653/v1/2021.eacl-main.204 is OK
- 10.1109/icics52457.2021.9464605 is OK
- 10.18280/ria.340111 is OK
- 10.3390/app12094188 is OK
- 10.11591/ijeecs.v19.i2.pp1010-1020 is OK
- 10.1109/iciev.2019.8858561 is OK
- 10.11591/ijece.v12i4.pp4195-4205 is OK
- 10.1109/icics55353.2022.9811149 is OK
- 10.1016/j.knosys.2022.108180 is OK
- 10.1007/s13369-021-05383-3 is OK
- 10.3390/bdcc6020048 is OK
- 10.1177/14604582211070998 is OK

MISSING DOIs

- 10.18653/v1/n16-3003 may be a valid DOI for title: Farasa: A fast and furious segmenter for arabic

INVALID DOIs

- None
linuxscout commented 1 year ago

@editorialbot generate pdf

linuxscout commented 1 year ago

@editorialbot check references

editorialbot commented 1 year ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

editorialbot commented 1 year ago
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.5121/ijdkp.2016.6602 is OK
- 10.1177/0165551519849516 is OK
- 10.1109/wits.2019.8723864 is OK
- 10.1016/j.procs.2017.10.111 is OK
- 10.1117/12.2242187 is OK
- 10.1109/icics52457.2021.9464602 is OK
- 10.1007/978-3-030-33582-3_1 is OK
- 10.1109/ICICS52457.2021.9464614 is OK
- 10.1057/s41599-021-00798-7 is OK
- 10.14569/IJACSA.2022.0130751 is OK
- 10.14569/ijacsa.2020.0111045 is OK
- 10.1007/978-981-15-0947-6_76 is OK
- 10.1109/fmec.2019.8795331 is OK
- 10.1109/icics52457.2021.9464566 is OK
- 10.1007/978-3-030-36778-7_22 is OK
- 10.1109/ICICS52457.2021.9464531 is OK
- 10.48550/ARXIV.1910.00421 is OK
- 10.18653/v1/2021.eacl-main.204 is OK
- 10.1109/icics52457.2021.9464605 is OK
- 10.18280/ria.340111 is OK
- 10.3390/app12094188 is OK
- 10.11591/ijeecs.v19.i2.pp1010-1020 is OK
- 10.1109/iciev.2019.8858561 is OK
- 10.11591/ijece.v12i4.pp4195-4205 is OK
- 10.1109/icics55353.2022.9811149 is OK
- 10.1016/j.knosys.2022.108180 is OK
- 10.1007/s13369-021-05383-3 is OK
- 10.3390/bdcc6020048 is OK
- 10.1177/14604582211070998 is OK
- 10.18653/v1/N16-3003 is OK

MISSING DOIs

- None

INVALID DOIs

- None
linuxscout commented 1 year ago

Hi @amitkumarj441, Thank you a lot for your valuable comments, I updated my repo and fix doi missing. Thanks again.

Though, there multiple folders for docs (doc and docs), keeping both would be okay as long as the main MANIFEST file contains include docs/* & include tests/*. Also, for mainstream documentation page: https://pyarabic.readthedocs.io/ar/latest/ for which the configuration file (.readthedocs.yml) is missing, including missing DOIs needs to be fixed.

I am happy to recommend the paper for publication at this point provided the above suggestions should be considered and hope that @linuxscout can provide their feedback soon.

amitkumarj441 commented 1 year ago

@editorialbot generate pdf