Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/advancedlogic/go-freeling
Golang Natural Language Processing
https://github.com/advancedlogic/go-freeling
Last synced: about 2 months ago
JSON representation
Golang Natural Language Processing
- Host: GitHub
- URL: https://github.com/advancedlogic/go-freeling
- Owner: advancedlogic
- License: gpl-3.0
- Created: 2015-06-06T17:29:26.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2023-03-16T07:08:18.000Z (over 1 year ago)
- Last Synced: 2024-06-18T17:14:18.067Z (3 months ago)
- Language: Go
- Homepage:
- Size: 120 KB
- Stars: 830
- Watchers: 35
- Forks: 70
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# go-freeling
**Natural Language Processing** in GO
This is a partial port of Freeling 3.1 (http://nlp.lsi.upc.edu/freeling/).
License is GPL to respect the License model of Freeling.
This is the list of features already implemented:
* Text tokenization
* Sentence splitting
* Morphological analysis
* Suffix treatment, retokenization of clitic pronouns
* Flexible multiword recognition
* Contraction splitting
* Probabilistic prediction of unknown word categories
* Named entity detection
* PoS tagging
* Chart-based shallow parsing
* Named entity classification (With an external library MITIE - https://github.com/mit-nlp/MITIE)
* Rule-based dependency parsing-
**How to use it**:
go build gofreeling.go./gofreeling
(http server listens on default port 9999 - port can be changed in conf/gofreeling.toml file)
To process a page:
HTTP GET: *http://localhost:9999/analyzer?url=COPY HERE AN URL*
or **Use as API endpoint:**
HTTP POST:http://localhost:9999/analyzer-api
{
content: 'Text you want to analyze'
}*Response is a self-explaining json*
**Usage as package:**
(*example*)
package mainimport (
. "./lib"
. "./models"
"fmt"
"encoding/json"
)func main() {
document := new(DocumentEntity)
analyzer := NewAnalyzer()
document.Content = "Hello World"
output := analyzer.AnalyzeText(document)
js := output.ToJSON()
b, err := json.Marshal(js)
if err != nil {
panic(err)
}fmt.Println(string(b))
}-
TODO:
* clean code
* add comments
* add tests
* ~~implement WordNet-based sense annotation and disambiguation~~-
**Linguistic Data** to run the server can be download here (English only):https://www.dropbox.com/s/fwwvfxp2s7dydet/data.zip
**WordNet Database** to add annotation (place it inside `./data` folder)
http://wordnetcode.princeton.edu/3.0/WNdb-3.0.tar.gz