Author: Andreas Blaette (andreas.blaette@uni-due.de)
Date: 2023-10-29

# OpenCPU

#### Andreas Blaette (andreas.blaette@uni-due.de)

#### 2023-10-29

## Objective

Sometimes, it is practically or legally not possible to move corpus data to a local machine. This vignette explains the usage of CWB corpora that are hosted on an OpenCPU server.

    library(polmineR)

    ## polmineR is throttled to use 2 cores as required by CRAN Repository Policy. To get full performance:
    ## * Use `n_cores <- parallel::detectCores()` to detect the number of cores available on your machine
    ## * Set number of cores using `options('polmineR.cores' = n_cores - 1)` and `data.table::setDTthreads(n_cores - 1)`

## Remote Corpora

### Publicly Available Corpora

The GermaParl corpus is hosted on an OpenCPU server with the IP 132.252.238.66 (subject to change). To use the corpus, use the `corpus()`-method. The only difference is that you will need to supply the IP address using the argument `server`.

    gparl <- corpus("GERMAPARL", server = "http://opencpu.politik.uni-due.de")

The `gparl` object is an object of class `remote_corpus`.

    is(gparl)

### Using polmineR core functionality

The polmineR at this stage exposes a limited set of its functionality for remote corpora. Simple investigations in the remote corpus are possible.

#### Get corpus size

    size(gparl)

#### Get structural annotation (metadata)

    s_attributes(gparl)

#### Subsetting

    gparl2006 <- subset(gparl, year == "2006")

The returned object has the class `remote_subcorpus`.

    is(gparl2006)

#### Simple count

    count(gparl, query = "Integration")

The `count()`-method works for `remote_subcorpus` objects, too.

    count(gparl2006, query = "Integration")

#### KWIC

    kwic(gparl, query = "Islam", left = 15, right = 15, meta = c("speaker", "party", "date"))

Works for the `remote_subcorpus`, too.

    kwic(gparl2006, query = "Islam", left = 15, right = 15, meta = c("speaker", "party", "date"))

### Restricted Corpora

1. Create directory for registry file-style files with credentials

2. Create file with credentials for your corpus in this directory

Note: Filename is corpus id in lowercase

    ##
    ## registry entry for corpus GERMAPARLSAMPLE
    ##

    # long descriptive name for the corpus
    NAME "GermaParlSample"
    # corpus ID (must be lowercase in registry!)
    ID   germaparlsample
    # path to binary data files
    HOME http://localhost:8005
    # optional info file (displayed by ",info;" command in CQP)
    INFO https://zenodo.org/record/3823245#.XsrU-8ZCT_Q

    # corpus properties provide additional information about the corpus:
    ##:: user = "YOUR_USER_NAME"
    ##:: password = "YOUR_PASSWORD"

3. Set environment variable “OPENCPU_REGISTRY” in .Renviron to dir just mentioned

4. Get server whereabouts

    x <- corpus("MIGPRESS_FAZ", server = "YOURSERVER", restricted = TRUE)

## Next steps

Upcoming versions of polmineR will expose further functionality. This is a simple proof-of-concept!