Author: bxv3gzkr4915

  • DiPS

    Submodular optimization-based diverse paraphrasing and its effectiveness in data augmentation

    Source code for NAACL 2019 paper: Submodular optimization-based diverse paraphrasing and its effectiveness in data augmentation

    Image

    • Overview of DiPS during decoding to generate k paraphrases. At each time step, a set of N sequences V(t) is used to determine k < N sequences (X) via submodular maximization . The above figure illustrates the motivation behind each submodular component. Please see Section 4 in the paper for details.

    Also on GEM/NL-Augmenter 🦎 → 🐍

    Dependencies

    • compatible with python 3.6
    • dependencies can be installed using requirements.txt

    Dataset

    Download the following datasets:

    Extract and place them in the data directory. Path : data/<dataset-folder-name>. A sample dataset folder might look like data/quora/<train/test/val>/<src.txt/tgt.txt>.

    Setup:

    To get the project’s source code, clone the github repository:

    $ git clone https://github.com/malllabiisc/DiPS

    Install VirtualEnv using the following (optional):

    $ [sudo] pip install virtualenv

    Create and activate your virtual environment (optional):

    $ virtualenv -p python3 venv
    $ source venv/bin/activate

    Install all the required packages:

    $ pip install -r requirements.txt

    Install the submodopt package by running the following command from the root directory of the repository:

    $ cd ./packages/submodopt
    $ python setup.py install
    $ cd ../../

    Training the sequence to sequence model

    python -m src.main -mode train -gpu 0 -use_attn -bidirectional -dataset quora -run_name <run_name>
    

    Create dictionary for submodular subset selection. Used for Semantic similarity (L2)

    To use trained embeddings –

    python -m src.create_dict -model trained -run_name <run_name> -gpu 0
    

    To use pretrained word2vec embeddings –

    python -m src.create_dict -model pretrained -run_name <run_name> -gpu 0
    

    This will generate the word2vec.pickle file in data/embeddings

    Decoding using submodularity

    python -m src.main -mode decode -selec submod -run_name <run_name> -beam_width 10 -gpu 0
    

    Citation

    Please cite the following paper if you find this work relevant to your application

    @inproceedings{dips2019,
        title = "Submodular Optimization-based Diverse Paraphrasing and its Effectiveness in Data Augmentation",
        author = "Kumar, Ashutosh  and
          Bhattamishra, Satwik  and
          Bhandari, Manik  and
          Talukdar, Partha",
        booktitle = "Proceedings of the 2019 Conference of the North {A}merican Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers)",
        month = jun,
        year = "2019",
        address = "Minneapolis, Minnesota",
        publisher = "Association for Computational Linguistics",
        url = "https://www.aclweb.org/anthology/N19-1363",
        pages = "3609--3619"
    }

    For any clarification, comments, or suggestions please create an issue or contact ashutosh@iisc.ac.in or Satwik Bhattamishra

    Visit original content creator repository https://github.com/malllabiisc/DiPS
  • vCards

    vCards CN

    导入常用联系人头像,优化 iOS 来电、信息界面体验。

    Screenshot


    使用指南

    方法一:安装 CardDAV 描述文件(推荐)

    1. 使用系统相机扫描下方二维码,下载配置描述文件

    1. 打开“设置”App,轻点“已下载描述文件”或“注册 [组织的名称]”
    1. 在右上角点击“安装”,按屏幕提示操作完成导入。

    方法二:手动订阅 CardDAV 服务

    采用订阅方式导入,优势是会自动更新,也方便区分和管理个人通讯录和黄页,避免混合两种列表。

    • 服务器:vcards.metowolf.com
    • 用户名:cn
    • 密码:cn 或任意填写

    如担心隐私问题,可参考 自建教程

    设置步骤

    • iOS
      「设置」→「通讯录」→「账户」→「添加账户」→「其他」→「添加 CardDAV 账户」
      参考:官方文档

    • Mac
      「通讯录」→「设置」→「账户」→「其他通讯录账户」
      参考:官方文档

    ⚠️ 默认 iOS 获取新资料的方式为「自动」,此情况下只有连接电源和 WLAN 时才会推送数据,请耐心等待。


    方法三:下载导入
    1. 前往 Releases 页面 下载最新打包文件 archive.zip
    2. 解压后,根据不同平台指南导入 vcf 文件至 iCloud(建议单独创建「黄页」分组以便管理与隐藏)

    macOS

    iOS / Web


    请求收录

    1. 打开 新增 vCard 请求 页面,选择「vCard 新增请求」
    2. 完整填写相关信息
    3. 提交 Issue,等待处理

    参与维护

    1. /data/类别/ 目录下添加 yamlpng 文件
    2. 在根目录执行 yarn test 检查格式规范
    3. 提交 Pull Request,等待合并

    号码收录说明

    鉴于不同地区及运营商的 106 短信推送号段存在差异,项目不做统一收录。建议将本项目作为基础模板,导入联系人后可按下图方式自行补充所需号码:

    Screenshot


    图标设计规范

    • 采用 PNG 编码
    • 画布大小:200px × 200px
    • logo 居中放置:
      • 圆形:140 × 140 px
      • 正方形:120 × 120 px
      • 长方形:160 × 80 px
      • 特殊情况特殊处理
    • 不支持 SVG,如需转换请使用 Inkscape 改绘
    • 图像大小压缩在 20 kB

    Design


    致谢

    Visit original content creator repository https://github.com/metowolf/vCards
  • vCards

    vCards CN

    导入常用联系人头像,优化 iOS 来电、信息界面体验。

    Screenshot


    使用指南

    方法一:安装 CardDAV 描述文件(推荐)

    1. 使用系统相机扫描下方二维码,下载配置描述文件

    1. 打开“设置”App,轻点“已下载描述文件”或“注册 [组织的名称]”
    1. 在右上角点击“安装”,按屏幕提示操作完成导入。

    方法二:手动订阅 CardDAV 服务

    采用订阅方式导入,优势是会自动更新,也方便区分和管理个人通讯录和黄页,避免混合两种列表。

    • 服务器:vcards.metowolf.com
    • 用户名:cn
    • 密码:cn 或任意填写

    如担心隐私问题,可参考 自建教程

    设置步骤

    • iOS
      「设置」→「通讯录」→「账户」→「添加账户」→「其他」→「添加 CardDAV 账户」
      参考:官方文档

    • Mac
      「通讯录」→「设置」→「账户」→「其他通讯录账户」
      参考:官方文档

    ⚠️ 默认 iOS 获取新资料的方式为「自动」,此情况下只有连接电源和 WLAN 时才会推送数据,请耐心等待。


    方法三:下载导入
    1. 前往 Releases 页面 下载最新打包文件 archive.zip
    2. 解压后,根据不同平台指南导入 vcf 文件至 iCloud(建议单独创建「黄页」分组以便管理与隐藏)

    macOS

    iOS / Web


    请求收录

    1. 打开 新增 vCard 请求 页面,选择「vCard 新增请求」
    2. 完整填写相关信息
    3. 提交 Issue,等待处理

    参与维护

    1. /data/类别/ 目录下添加 yamlpng 文件
    2. 在根目录执行 yarn test 检查格式规范
    3. 提交 Pull Request,等待合并

    号码收录说明

    鉴于不同地区及运营商的 106 短信推送号段存在差异,项目不做统一收录。建议将本项目作为基础模板,导入联系人后可按下图方式自行补充所需号码:

    Screenshot


    图标设计规范

    • 采用 PNG 编码
    • 画布大小:200px × 200px
    • logo 居中放置:
      • 圆形:140 × 140 px
      • 正方形:120 × 120 px
      • 长方形:160 × 80 px
      • 特殊情况特殊处理
    • 不支持 SVG,如需转换请使用 Inkscape 改绘
    • 图像大小压缩在 20 kB

    Design


    致谢

    Visit original content creator repository https://github.com/metowolf/vCards
  • WLE-WebXR-Body-Tracking

    Wonderland Engine Body-Tracking by Tristan(Shaepic) based on Wonderland Engine hand-tracking component.
    
    Features:
    
    Rendering of tracked joints.
    Rendering of tracked body.
    Under-the-hood joint hierarchy remapping/reassembly to meet WebXR specified joint order.
    Joint debugger for locating mapping errors. 
    
    Before you start:
    
    It is important to be sure that your app is requesting WebXR body-tracking by enabling the feature request in Wonderland Editor.
    To do this, open the project settings tab, then open the 'Runtime' dropdown.
    In either the 'Required WebXR Features' or 'Optional WebXR Features' coulomb, check body-tracking(if listed).
    If body-tracking is not listed, enter 'body-tracking' in the text field below either coulomb. The coulomb you chose will reflect
    weather your app necessitates body-tracking for the experience or if it is simply an added feature.
    
    How-To:
    
    The use of the WLE body-tracking component follows the implementation instructions of all Wonderland Engine custom components.
    Simply drag the body-tracking.js file into the desired folder in your Wonderland Editor or to the project folder on your OS.
    
    In the Editor, attach the body-tracking script to either an empty object on the scene(for simple joint tracking) or to the avatar mesh object you want to 
    body track.
    
    If you are joint tracking, open the body-tracking component dropdown menu and in the jointObject menu select an object mesh to represent your joint
    then in the jointMaterial menu, select a material for your joints.
    
    
    If you are body tracking, open the body-tracking component dropdown menu and in the bodySkin menu select a skin you would like your body to be 
    rendered as.
    Your body skin MUST contain all joints listed in the WebXR specified joint list https://github.com/immersive-web/body-tracking/blob/main/index.bs
    with the exception of the "root" joint. 
    
    Debugging:
    
    If you run intro joint problems (there can be many if it is your first rig) you may want to use the text object debugger. Simply create a text object
    in the scene and position it high enough to list all of the 80+joints in vertically descending order. (you can adjust font size as well)
    In your body-tracking component dropdown menu, select the text object in the textObject menu.
    If a joint fails to map because of a naming error(or it being null) the debugger will list all valid joints up until the problem joint.
    
    3/31/24

    Visit original content creator repository
    https://github.com/Shaepic/WLE-WebXR-Body-Tracking

  • WLE-WebXR-Body-Tracking

    Wonderland Engine Body-Tracking by Tristan(Shaepic) based on Wonderland Engine hand-tracking component.
    
    Features:
    
    Rendering of tracked joints.
    Rendering of tracked body.
    Under-the-hood joint hierarchy remapping/reassembly to meet WebXR specified joint order.
    Joint debugger for locating mapping errors. 
    
    Before you start:
    
    It is important to be sure that your app is requesting WebXR body-tracking by enabling the feature request in Wonderland Editor.
    To do this, open the project settings tab, then open the 'Runtime' dropdown.
    In either the 'Required WebXR Features' or 'Optional WebXR Features' coulomb, check body-tracking(if listed).
    If body-tracking is not listed, enter 'body-tracking' in the text field below either coulomb. The coulomb you chose will reflect
    weather your app necessitates body-tracking for the experience or if it is simply an added feature.
    
    How-To:
    
    The use of the WLE body-tracking component follows the implementation instructions of all Wonderland Engine custom components.
    Simply drag the body-tracking.js file into the desired folder in your Wonderland Editor or to the project folder on your OS.
    
    In the Editor, attach the body-tracking script to either an empty object on the scene(for simple joint tracking) or to the avatar mesh object you want to 
    body track.
    
    If you are joint tracking, open the body-tracking component dropdown menu and in the jointObject menu select an object mesh to represent your joint
    then in the jointMaterial menu, select a material for your joints.
    
    
    If you are body tracking, open the body-tracking component dropdown menu and in the bodySkin menu select a skin you would like your body to be 
    rendered as.
    Your body skin MUST contain all joints listed in the WebXR specified joint list https://github.com/immersive-web/body-tracking/blob/main/index.bs
    with the exception of the "root" joint. 
    
    Debugging:
    
    If you run intro joint problems (there can be many if it is your first rig) you may want to use the text object debugger. Simply create a text object
    in the scene and position it high enough to list all of the 80+joints in vertically descending order. (you can adjust font size as well)
    In your body-tracking component dropdown menu, select the text object in the textObject menu.
    If a joint fails to map because of a naming error(or it being null) the debugger will list all valid joints up until the problem joint.
    
    3/31/24

    Visit original content creator repository
    https://github.com/Shaepic/WLE-WebXR-Body-Tracking

  • kales

    Kales

    A modern web framework built for developer productivity and safety.
    Kales runs on top of Ktor and uses an MVC architecture.

    Usage

    Run the following in your terminal, then follow the onscreen instructions.

    curl https://raw.githubusercontent.com/felipecsl/kales/master/scripts/install -sSf | sh
    

    This will install the command line application kales. It can generate the boilerplate
    you need to bootstrap a new web app.

    Running the example app

    ./gradlew sampleapp:run
    

    then open http://localhost:8080 on your browser.

    Hot reloading

    Ktor supports hot reloading out of the box, simply open a new terminal window and run:

    ./gradlew -t sampleapp:jar
    

    Deploying the docs website

    $ ./gradlew dokka # Regenerate the API docs
    $ cd website
    $ GIT_USER=felipecsl \
     CURRENT_BRANCH=master \
     USE_SSH=true \
     yarn run publish-gh-pages
    

    and it will automatically rebuild as you make new changes.

    Download

    implementation 'com.felipecsl.kales:kales:0.0.7-SNAPSHOT'
    

    Snapshots of the development version are available in
    Sonatype’s snapshots repository.

    Usage

    Check the sampleapp
    directory for an application that uses some of the features exposed by Kales.

    For more information, please check the Kales website.

    Visit original content creator repository
    https://github.com/felipecsl/kales

  • SRL-S2S

    Encoder-Decoder Model for Semantic Role Labeling

    This repository contains the code for:

    The code runs on top of AllenNLP toolkit.

    Requirements

    Getting Started

    Setting Up the Environment

    1. Create the SRL-S2S environment using Anaconda
    conda create -n SRL-S2S python=3.6
    
    1. Activate the environment
    source activate SRL-S2S
    
    1. Install the requirements in the environment:

    Install pytorch 1.0 (the GPU version with CUDA 8 is recommended):

    conda install pytorch torchvision cuda80 -c pytorch
    

    Install further dependencies…

    bash scripts/install_requirements.sh
    

    NOTE: There are some reported issues when installing AllenNLP on Mac OS X 10.14 [Mojave] (especially with a Jsonnet module error). If the installation failed, run the following commands:

    xcode-select --install
    open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
    

    Then run again the install_requirements script. If problems persist, try one of these workarounds:

    allenai/allennlp#1938

    google/jsonnet#573

    Short Tutorial

    We show with a toy example how to:

    • Pre-process and build datasets that our models can read
    • Train a model
    • Predict new outputs using a trained model

    Pre-processing

    All models require JSON Files as input. In the pre-processing folder we include the script CoNLL_to_JSON.py to transform
    files following the CoNLL-U data formats into a suitable input JSON dataset.

    It is also possible to transform any text files into our JSON format (including parallel Machine Translation files) with the Text_to_JSON.py script.

    The simplest case is to transform a CoNLL file into JSON where the source sequence is a sentence (only words) and the target sequence is the tagged sentence. To build a monolingual dataset for training run:

    python pre_processing/CoNLL_to_JSON.py \
    	--source_file datasets/raw/CoNLL2009-ST-English-trial.txt \
    	--output_file datasets/json/EN_conll09_trial.json \
    	--dataset_type mono \
    	--src_lang "<EN>" \
    	--token_type CoNLL09
    

    Each line inside the JSON file EN_conll09_trial.json will look like this:

    {
       "seq_words": ["The", "economy", "'s", "temperature", "will", "be", "taken", "from", "several", "vantage", "points", "this", "week", ",", "with", "readings", "on", "trade", ",", "output", ",", "housing", "and", "inflation", "."], 
       "BIO": ["O", "O", "O", "B-A1", "B-AM-MOD", "O", "B-V", "B-A2", "O", "O", "O", "O", "B-AM-TMP", "O", "B-AM-ADV", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O"], 
       "pred_sense": [6, "taken", "take.01", "VBN"], 
       "seq_tag_tokens": ["The", "economy", "'s", "(#", "temperature", "A1)", "(#", "will", "AM-MOD)", "be", "(#", "taken", "V)", "(#", "from", "A2)", "several", "vantage", "points", "this", "(#", "week", "AM-TMP)", ",", "(#", "with", "AM-ADV)", "readings", "on", "trade", ",", "output", ",", "housing", "and", "inflation", "."], 
       "src_lang": "<EN>", 
       "tgt_lang": "<EN-SRL>", 
       "seq_marked": ["The", "economy", "'s", "temperature", "will", "be", "<PRED>", "taken", "from", "several", "vantage", "points", "this", "week", ",", "with", "readings", "on", "trade", ",", "output", ",", "housing", "and", "inflation", "."]
    
    }
    

    To build a crosslingual dataset (e.g. an English sentence as source and German tagged sequence on the target side) run:

    python pre_processing/CoNLL_to_JSON.py \
    	--source_file datasets/raw/CrossLang_ENDE_EN_trial.txt \
    	--target_file datasets/raw/CrossLang_ENDE_DE_trial.conll09 \
    	--output_file datasets/json/En2DeSRL.json \
    	--dataset_type cross \
    	--src_lang "<EN>" \
    	--tgt_lang "<DE-SRL>"
    

    Each line inside the JSON file En2DeSRL.json will look like this:

    {
    	"seq_words": ["We", "need", "to", "take", "this", "responsibility", "seriously", "."], 
    	"BIO": ["O", "B-V", "O", "O", "O", "O", "O", "O"], 
    	"pred_sense_origin": [1, "need", "need.01", "V"], 
    	"pred_sense": [1, "m\u00fcssen", "need.01", "VMFIN"], 
    	"seq_tag_tokens": ["(#", "Wir", "A0)", "(#", "m\u00fcssen", "V)", "diese", "Verantwortung", "ernst", "nehmen", "."], 
    	"src_lang": "<EN>", 
    	"tgt_lang": "<DE-SRL>"
    }
    

    Finally, to create a JSON dataset file given parallel MT data (for example, the Europarl files with the translations of English-German) one can run:

    python pre_processing/Text_to_JSON.py --path datasets/raw/ \
                --source_file mini_europarl-v7.de-en.en \
                --target_file mini_europarl-v7.de-en.de \
                --output datasets/json/MiniEuroparl.en_to_de.json \
                --src_key "<EN>" --tgt_key "<DE>"
    

    The script pre-processing/make_all_trial.py inlcudes all the pre-processing options and dataset types available.

    Train a Model

    • Model Configurations are found in training_config folder and subfolders. Note that inside this configuration file one can manipulate the model hyperparameters and also point to the desired datasets.
    • To train a model, choose an experiment config file (for example training_config/test/en_copynet-srl-conll09.json) and run in the main directory the following command:

    allennlp train training_config/test/en_copynet-srl-conll09.json -s saved_models/example-srl-en/ --include-package src
    
    
    • Results and training info will be stored in the saved_models/example-srl-en directory.
    • NOTE: The model hyperparameters for experiments from the paper are included inside the training_config and shall be trained the same way.

    Use a Trained Model

    Convert txt-file into JSON

    At inference time, it is only necessary to provide a file.txt with one sentence per line. With this, we can use Flair to predict the predicates inside the sentences and then use our model to predict the SRL labels for each predicate.

    First, we need to transform the input into JSON format and give a desired target language (for example, if we want labeled german we should indicate the tgt_key as ):

    python pre_processing/Text_to_JSON.py --source_file datasets/raw/mini_europarl-v7.de-en.en \
                 --output datasets/test/MiniEuroparl.PREDICT.json \
                 --src_key "<EN>" --tgt_key "<DE-SRL>" \
                 --predict_frames True \
                 --sense_dict datasets/aux/En_De_TopSenses.tsv
    

    Get Predictions

    To make predictions using a trained model (use the checkpoint which had the best BLEU score on the development set) run:

    allennlp predict saved_models/example-srl-en/model.tar.gz datasets/test/MiniEuroparl.PREDICT.json \
    	--output-file saved_models/example-srl-en/output_trial.json \
    	--include-package src \
    	--predictor seq2seq-srl
    

    where EN_conll09_trial_to_predict.json contains the source sequences to be predicted.

    Please note that these files were provided just to give an example of the workflow, therefore predictions using these settings will be random!

    Reproducing Results

    To reproduce the results in the paper it is necessary to have the license for the CoNLL-2005 and CoNLL-2009
    Shared Task datasets:

    The SRL data for French is publicly available (registration is needed) here.

    The Machine Translation corpora used were:

    Cross-lingual SRL data used for our training was requested to the authors of:

    Generating High Quality Proposition Banks for Multilingual Semantic Role Labeling (Akbik et al., 2015).

    We included the configuration files for each experimental setup (monolingual, multilingual and cross-lingual)
    in the training_config folder of this repository. They must run in a similar manner as the previous tutorial showed.

    Visit original content creator repository
    https://github.com/Heidelberg-NLP/SRL-S2S

  • xournalpp

    Xournal++

    Build Status Join the chat at https://gitter.im/xournalpp/xournalpp

    Translations

    Would you like to see Xournal++ in your own language? Translators are welcome to contribute to Xournal++.

    You can contribute translations on Crowdin

    Interested in translating a new language? Discuss on Gitter or create a new issue to unlock the language on Crowdin.

    Thanks in advance!

    Features

    Xournal++ (/ˌzɚnl̟ˌplʌsˈplʌs/) is a hand note-taking software written in C++ with the target of flexibility, functionality and speed. Stroke recognizer and other parts are based on Xournal Code, which you can find at SourceForge.

    Xournal++ features:

    • Supports pressure-sensitive styluses and digital pen tables (e.g. Wacom, Huion, XP Pen, etc. tablets)
    • Paper backgrounds for note-taking, scratch paper, or whiteboarding
    • Annotate on top of PDFs
    • Select text from the background PDF, copy, highlight or underline it or strike it through
    • Follow links from the background PDF
    • Export to a variety of formats including SVG, PNG and PDF, both from the GUI and command line
    • Different drawing tools (e.g. pen, highlighter) and stroke styles (e.g. solid, dotted)
    • Shape drawing (line, arrow, circle, rectangle, spline)
    • Use the set-square and compass tools for measurements or as a guide for drawing straight lines, circular arcs and radii
    • Fill shape functionality
    • Shape resizing and rotation
    • Rotation and grid snapping for precise alignment of objects
    • Input stabilization for smoother writing/drawing
    • Text tool for adding text in different fonts, colors, and sizes
    • Enhanced support for image insertion
    • Eraser with multiple configurations
    • LaTeX support (requires a working LaTeX installation) with customizable template and a resizable editor with syntax highlighting
    • Sidebar containing page previews with advanced page sorting, PDF bookmarks and layers (can be individually hidden/edited)
    • Allows mapping different tools/colors etc. to stylus/mouse buttons
    • Customizable toolbar with multiple configurations, e.g. to optimize toolbar for portrait/landscape
    • Custom color palette support using the .gpl format
    • Page template definitions
    • Bug reporting, auto-save, and auto backup tools
    • Audio recording and playback alongside with handwritten notes
    • Multi language support (over 20 languages supported)
    • Plugins using Lua scripting

    Mobile & web app

    From mid 2020 to May 2021, a Flutter-written mobile app for Android, Chrome OS and iOS (unreleased) and the web has been developed, which supports the file format and most of the basic features of Xournal++. Unfortunately development has stalled and we have lost contact to the (single) developer. The web app is no longer available. You can still check out the separate repository on GitLab or Get it on Google Play

    GNU/Linux

    Windows 10

    macOS Catalina

    Xournal++ Mobile on Chromium OS

    Toolbar / Page Background / Layer

    Multiple page background, easy selectable on the toolbar

    Layer sidebar and advanced layer selection

    Multiple predefined and fully customizable toolbars

    User Manual and FAQ

    For general usage, consult the User Manual. Answers to some common questions can be found in the FAQ.

    Experimental Features

    Sometimes a feature is added that might not be rock solid, or the developers aren’t sure if it is useful. Try these out and give us some feedback.

    Here are a few under development that you can play with now:

    • Assign a mouse button or stylus button to bring up a toolbox of toolbars right under the cursor. You can also modify what is in the toolbox through the usual View → Toolbars → Customize although it won’t appear unless you’ve assigned a button in preferences: mouse or stylus (or selected a toolbar configuration that uses it).

      • This is an experimental feature because not everything you can put in the toolbox behaves. So be aware.

    • Keep your eyes out for other experimental features in preferences as seen here:

      DrawingTools: When drawing a box, circle etc, simulate ctrl or shift modifiers by the initial direction you move the mouse.

      Action on Tool Tap: Allow a brief tap on the screen to bring up the floating toolbox and/or select an object. May work with pen and highlighter only.

    Installing

    The official releases of Xournal++ can be found on the Releases page. We provide binaries for Debian, Ubuntu, MacOS and Windows. For other GNU/Linux distributions (or older/newer ones), we also provide an AppImage that is binary compatible with any distribution released around or after Ubuntu 22.04. For installing Xournal++ Mobile on handheld devices, please check out Xournal++ Mobile’s instructions

    A note for Ubuntu/Debian users: The official binaries that we provide are only compatible with the specific version of Debian or Ubuntu indicated by the file name. For example, if you are on Ubuntu 20.04, the binary whose name contains Ubuntu-bionic is only compatible with Ubuntu 18.04. If your system is not one of the specific Debian or Ubuntu versions that are supported by the official binaries, we recommend you use either the PPA (Ubuntu only), the Flatpak, or the AppImage.

    There is also an unstable, automated nightly release that includes the very latest features and bug fixes.

    With the help of the community, Xournal++ is also available on official repositories of some popular GNU/Linux distros and platforms.

    Debian

    On Debian bookworm and Debian sid the xournalpp package (stable version) is contained in the official repositories. Simply install via

    sudo apt install xournalpp

    There are also the official Stable releases and unstable automated nightly releases.

    Ubuntu and derivatives

    On distros based on Ubuntu 22.04 Jammy Jellyfish (and later) the xournalpp package (stable version) is contained in the official repositories. Simply install via

    sudo apt install xournalpp

    Stable PPA

    The latest stable version is available via the following unofficial PPA:

    sudo add-apt-repository ppa:apandada1/xournalpp-stable
    sudo apt update
    sudo apt install xournalpp

    Unstable PPA

    An unstable, nightly release is available for Ubuntu-based distributions via the following PPA:

    sudo add-apt-repository ppa:andreasbutti/xournalpp-master
    sudo apt update
    sudo apt install xournalpp

    This PPA is provided by the Xournal++ team. While it has the latest features and bug fixes, it has also not been tested thoroughly and may break periodically (we try our best not to break things, though).

    Fedora

    The released version of xournalpp is available in the main repository via Software application or the following command:

    sudo dnf install xournalpp

    or

    pkcon install xournalpp

    The bleeding edge packages synced to xournalpp git master on a daily basis are available from COPR luya/xournalpp. Copr build status

    openSUSE

    On openSUSE Tumbleweed, the released version of Xournal++ is available from the main repository:

    sudo zypper in xournalpp

    For openSUSE Leap 15.0 and earlier, use the install link from X11:Utilities.

    For all versions of openSUSE, bleeding edge packages synced to xournalpp git master on a weekly basis are available from home:badshah400:Staging.

    Arch Linux

    The latest stable release is available in the [extra] repository.

    To build the latest state of the master branch yourself, use this AUR package.

    Solus

    The latest stable release is available in the main repository:

    sudo eopkg it xournalpp

    Flatpak

    The Xournal++ team officially supports a FlatHub release, which can be installed with

    flatpak install flathub com.github.xournalpp.xournalpp

    Note that for Xournal++ to work properly, you must have at least one GTK theme and one icon theme installed on Flatpak. To enable LaTeX support, you will also need to install the TeX Live extension:

    flatpak install flathub org.freedesktop.Sdk.Extension.texlive

    The Flatpak manifest can be found at the Xournal++ Flatpak packaging repository, and all Flatpak-related packaging issues should be reported there.

    Android and Chrome OS

    Android is supported by Xournal++ Mobile. It can be downloaded either on the Tags page or from Google Play.

    iOS

    Unfortunately, the iOS app is not published yet in the Apple App Store. See here to learn, why. Anyway, in the Building section you can learn how to build an early preview.

    Windows

    Official Windows releases are provided on the Releases page.

    Mac OS X

    Mac OS X releases are provided on the Releases page.

    Notes:

    • There have been compatibility problems with Mac OS X Catalina regarding both file permissions and stylus support (#1772 and #1757). Unfortunately, we don’t have the resources to adequately support Catalina at this time. Help would be appreciated!
    • Xournal++ will be delivered with a patched GTK. Else, pressure sensitivity will not work on Mac #569.

    Building

    GNU/Linux Build

    Mac Build

    Windows Build

    Android Build

    iOS Build

    File format

    The file extension .xopp is a gzipped XML file. PDFs are not embedded into the file, so if the PDF is deleted, the background is lost. .xopp is basically the same file format as .xoj, which is used by Xournal. Therefore, Xournal++ is able to read .xoj files, and can also export to .xoj. As soon as notes are exported to a .xoj file, all Xournal++ specific extensions like additional background types, are lost.

    .xopp files can theoretically be read by Xournal, as long as you do not use any new features. Xournal does not open files that contain new attributes or unknown values, so Xournal++ will add the extension .xopp to all saved files to indicate the potential presence of Xournal++-only features.

    All new files will be saved as .xopp. If an .xoj file that was created by Xournal is opened, the Save-As dialog will be displayed on save. If the .xoj file was created by Xournal++, the file will be overwritten on save and the file extension will not change.

    We are currently introducing a new file format that can efficiently store attached PDF files and other attachments internally. We will still allow for attachments that are linked to external files. Please refer to #937 for further details.

    Building

    We support building on three operating systems:

    Contributing

    See CONTRIBUTING.md

    Visit original content creator repository https://github.com/xournalpp/xournalpp
  • xournalpp

    Xournal++

    Build Status Join the chat at https://gitter.im/xournalpp/xournalpp

    Translations

    Would you like to see Xournal++ in your own language? Translators are welcome to contribute to Xournal++.

    You can contribute translations on Crowdin

    Interested in translating a new language? Discuss on Gitter or create a new issue to unlock the language on Crowdin.

    Thanks in advance!

    Features

    Xournal++ (/ˌzɚnl̟ˌplʌsˈplʌs/) is a hand note-taking software written in C++ with the target of flexibility, functionality and speed. Stroke recognizer and other parts are based on Xournal Code, which you can find at SourceForge.

    Xournal++ features:

    • Supports pressure-sensitive styluses and digital pen tables (e.g. Wacom, Huion, XP Pen, etc. tablets)
    • Paper backgrounds for note-taking, scratch paper, or whiteboarding
    • Annotate on top of PDFs
    • Select text from the background PDF, copy, highlight or underline it or strike it through
    • Follow links from the background PDF
    • Export to a variety of formats including SVG, PNG and PDF, both from the GUI and command line
    • Different drawing tools (e.g. pen, highlighter) and stroke styles (e.g. solid, dotted)
    • Shape drawing (line, arrow, circle, rectangle, spline)
    • Use the set-square and compass tools for measurements or as a guide for drawing straight lines, circular arcs and radii
    • Fill shape functionality
    • Shape resizing and rotation
    • Rotation and grid snapping for precise alignment of objects
    • Input stabilization for smoother writing/drawing
    • Text tool for adding text in different fonts, colors, and sizes
    • Enhanced support for image insertion
    • Eraser with multiple configurations
    • LaTeX support (requires a working LaTeX installation) with customizable template and a resizable editor with syntax highlighting
    • Sidebar containing page previews with advanced page sorting, PDF bookmarks and layers (can be individually hidden/edited)
    • Allows mapping different tools/colors etc. to stylus/mouse buttons
    • Customizable toolbar with multiple configurations, e.g. to optimize toolbar for portrait/landscape
    • Custom color palette support using the .gpl format
    • Page template definitions
    • Bug reporting, auto-save, and auto backup tools
    • Audio recording and playback alongside with handwritten notes
    • Multi language support (over 20 languages supported)
    • Plugins using Lua scripting

    Mobile & web app

    From mid 2020 to May 2021, a Flutter-written mobile app for Android, Chrome OS and iOS (unreleased) and the web has been developed, which supports the file format and most of the basic features of Xournal++. Unfortunately development has stalled and we have lost contact to the (single) developer. The web app is no longer available. You can still check out the separate repository on GitLab or Get it on Google Play

    GNU/Linux

    Windows 10

    macOS Catalina

    Xournal++ Mobile on Chromium OS

    Toolbar / Page Background / Layer

    Multiple page background, easy selectable on the toolbar

    Layer sidebar and advanced layer selection

    Multiple predefined and fully customizable toolbars

    User Manual and FAQ

    For general usage, consult the User Manual. Answers to some common questions can be found in the FAQ.

    Experimental Features

    Sometimes a feature is added that might not be rock solid, or the developers aren’t sure if it is useful. Try these out and give us some feedback.

    Here are a few under development that you can play with now:

    • Assign a mouse button or stylus button to bring up a toolbox of toolbars right under the cursor. You can also modify what is in the toolbox through the usual View → Toolbars → Customize although it won’t appear unless you’ve assigned a button in preferences: mouse or stylus (or selected a toolbar configuration that uses it).

      • This is an experimental feature because not everything you can put in the toolbox behaves. So be aware.

    • Keep your eyes out for other experimental features in preferences as seen here:

      DrawingTools: When drawing a box, circle etc, simulate ctrl or shift modifiers by the initial direction you move the mouse.

      Action on Tool Tap: Allow a brief tap on the screen to bring up the floating toolbox and/or select an object. May work with pen and highlighter only.

    Installing

    The official releases of Xournal++ can be found on the Releases page. We provide binaries for Debian, Ubuntu, MacOS and Windows. For other GNU/Linux distributions (or older/newer ones), we also provide an AppImage that is binary compatible with any distribution released around or after Ubuntu 22.04. For installing Xournal++ Mobile on handheld devices, please check out Xournal++ Mobile’s instructions

    A note for Ubuntu/Debian users: The official binaries that we provide are only compatible with the specific version of Debian or Ubuntu indicated by the file name. For example, if you are on Ubuntu 20.04, the binary whose name contains Ubuntu-bionic is only compatible with Ubuntu 18.04. If your system is not one of the specific Debian or Ubuntu versions that are supported by the official binaries, we recommend you use either the PPA (Ubuntu only), the Flatpak, or the AppImage.

    There is also an unstable, automated nightly release that includes the very latest features and bug fixes.

    With the help of the community, Xournal++ is also available on official repositories of some popular GNU/Linux distros and platforms.

    Debian

    On Debian bookworm and Debian sid the xournalpp package (stable version) is contained in the official repositories. Simply install via

    sudo apt install xournalpp

    There are also the official Stable releases and unstable automated nightly releases.

    Ubuntu and derivatives

    On distros based on Ubuntu 22.04 Jammy Jellyfish (and later) the xournalpp package (stable version) is contained in the official repositories. Simply install via

    sudo apt install xournalpp

    Stable PPA

    The latest stable version is available via the following unofficial PPA:

    sudo add-apt-repository ppa:apandada1/xournalpp-stable
    sudo apt update
    sudo apt install xournalpp

    Unstable PPA

    An unstable, nightly release is available for Ubuntu-based distributions via the following PPA:

    sudo add-apt-repository ppa:andreasbutti/xournalpp-master
    sudo apt update
    sudo apt install xournalpp

    This PPA is provided by the Xournal++ team. While it has the latest features and bug fixes, it has also not been tested thoroughly and may break periodically (we try our best not to break things, though).

    Fedora

    The released version of xournalpp is available in the main repository via Software application or the following command:

    sudo dnf install xournalpp

    or

    pkcon install xournalpp

    The bleeding edge packages synced to xournalpp git master on a daily basis are available from COPR luya/xournalpp. Copr build status

    openSUSE

    On openSUSE Tumbleweed, the released version of Xournal++ is available from the main repository:

    sudo zypper in xournalpp

    For openSUSE Leap 15.0 and earlier, use the install link from X11:Utilities.

    For all versions of openSUSE, bleeding edge packages synced to xournalpp git master on a weekly basis are available from home:badshah400:Staging.

    Arch Linux

    The latest stable release is available in the [extra] repository.

    To build the latest state of the master branch yourself, use this AUR package.

    Solus

    The latest stable release is available in the main repository:

    sudo eopkg it xournalpp

    Flatpak

    The Xournal++ team officially supports a FlatHub release, which can be installed with

    flatpak install flathub com.github.xournalpp.xournalpp

    Note that for Xournal++ to work properly, you must have at least one GTK theme and one icon theme installed on Flatpak. To enable LaTeX support, you will also need to install the TeX Live extension:

    flatpak install flathub org.freedesktop.Sdk.Extension.texlive

    The Flatpak manifest can be found at the Xournal++ Flatpak packaging repository, and all Flatpak-related packaging issues should be reported there.

    Android and Chrome OS

    Android is supported by Xournal++ Mobile. It can be downloaded either on the Tags page or from Google Play.

    iOS

    Unfortunately, the iOS app is not published yet in the Apple App Store. See here to learn, why. Anyway, in the Building section you can learn how to build an early preview.

    Windows

    Official Windows releases are provided on the Releases page.

    Mac OS X

    Mac OS X releases are provided on the Releases page.

    Notes:

    • There have been compatibility problems with Mac OS X Catalina regarding both file permissions and stylus support (#1772 and #1757). Unfortunately, we don’t have the resources to adequately support Catalina at this time. Help would be appreciated!
    • Xournal++ will be delivered with a patched GTK. Else, pressure sensitivity will not work on Mac #569.

    Building

    GNU/Linux Build

    Mac Build

    Windows Build

    Android Build

    iOS Build

    File format

    The file extension .xopp is a gzipped XML file. PDFs are not embedded into the file, so if the PDF is deleted, the background is lost. .xopp is basically the same file format as .xoj, which is used by Xournal. Therefore, Xournal++ is able to read .xoj files, and can also export to .xoj. As soon as notes are exported to a .xoj file, all Xournal++ specific extensions like additional background types, are lost.

    .xopp files can theoretically be read by Xournal, as long as you do not use any new features. Xournal does not open files that contain new attributes or unknown values, so Xournal++ will add the extension .xopp to all saved files to indicate the potential presence of Xournal++-only features.

    All new files will be saved as .xopp. If an .xoj file that was created by Xournal is opened, the Save-As dialog will be displayed on save. If the .xoj file was created by Xournal++, the file will be overwritten on save and the file extension will not change.

    We are currently introducing a new file format that can efficiently store attached PDF files and other attachments internally. We will still allow for attachments that are linked to external files. Please refer to #937 for further details.

    Building

    We support building on three operating systems:

    Contributing

    See CONTRIBUTING.md

    Visit original content creator repository https://github.com/xournalpp/xournalpp
  • gsls-svm

    gsls-svm

    Greedy Sparse Least-Squares (GSLS) SVM and how to use it in regression analysis. This algorithm was invented by Gavin C. Cawley and Nicola L.C. Talbot.

    example

    Requirements

    There are no requirements for GSLS_SVM function from GSLS-SVM.jl

    But if you want to test it with test.jl you should install:
    Plots
    Distributions

    Launch

    From Julia REPL:

    julia> include("main.jl")

    Description

    As you might guess, GSLS is a Greedy algorithm. Its purpose is to construct Sparse approximation of the LS-SVM solution to the regularized least-squares regression problem. Given training data

    data

    where

    domains

    LS-SVM with kernel function

    kernel

    determines coefficients

    coefficients

    for the solution to the mentioned regression problem

    solution

    which minimises LS-SVM objective function.

    We aim to find such an approximation (which we call sparse) that for some proper subset (which we call dictionary)

    subset

    coefficients

    coefficients

    of the function

    function

    will minimise GSLS SVM objective function

    objective function

    as much as possible. γ is the regularization parameter. At each iteration GSLS chooses some new vector from dataset as support vector, calculates value of the objective function and in a greedy maner, incorporates best possible support vector (on current iteration) to the dictionary, than proceeds to the next iteration. This process is terminated once dictionary has reached some pre-determined size. More detailed description of this simple, but efficient algorithm can be found in paper.

    Usage

    Let’s figure out on how to use GSLS SVM in regression analysis.

    1. Given values X::Vector{Float64} of predictor and outcomes y::Vector{Float64} you have to prepare data to train GSLS SVM like this:
    𝑿 = [[x] for x in X]
    𝒚 = transpose(y)
    1. Then you have to choose number of support vectors sv_num::Int, regularization parameter γ::Float and kernel function kernel (construct it using higher-order functions kernel = kernel_RBF(σ) or kernel = kernel_polynomial(n, r)) and pass all this stuff to GSLS SVM algorithm like this:
    dict_indices, 𝜷, b = GSLS_SVM(kernel, 𝑿, 𝒚, γ, sv_num)
    1. Finally, you have all you need to build the empirical estimation of the theoretical regression model:
    f(x) = b + sum([𝜷[i] * kernel(𝑿[dict_indices[i]], [x])
                                            for i=1:length(dict_indices)])
    Visit original content creator repository https://github.com/zhenyatos/gsls-svm