Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
seth-mg committed Nov 22, 2024
2 parents f800744 + a07aead commit aeb9930
Show file tree
Hide file tree
Showing 58 changed files with 221 additions and 132 deletions.
47 changes: 36 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,37 @@
<a href="https://www.babelstreet.com/rosette"><img src="https://charts.babelstreet.com/icon.png" width="47" height="60"/></a>
# Rosette by Babel Street
<a href="https://www.babelstreet.com/rosette">
<picture>
<source media="(prefers-color-scheme: light)" srcset="https://charts.babelstreet.com/icon-dark.png">
<source media="(prefers-color-scheme: dark)" srcset="https://charts.babelstreet.com/icon-light.png">
<img alt="Babel Street Logo" width="48" height="48">
</picture>
</a>

# Analytics by Babel Street

---

[![NuGet version](https://badge.fury.io/nu/rosette_api.svg)](https://badge.fury.io/nu/rosette_api)

Rosette uses natural language processing, statistical modeling, and machine learning to analyze unstructured and semi-structured text across hundreds of language-script combinations, revealing valuable information and actionable data. Rosette provides endpoints for extracting entities and relationships, translating and comparing the similarity of names, categorizing and adding linguistic tags to text and more. Rosette Server is the on-premises installation of Rosette, with access to Rosette's functions as RESTful web service endpoints. This solves cloud security worries and allows customization (models/indexes) as needed for your business.
Our product is a full text processing pipeline from data preparation to extracting the most relevant information and
analysis utilizing precise, focused AI that has built-in human understanding. Text Analytics provides foundational
linguistic analysis for identifying languages and relating words. The result is enriched and normalized text for
high-speed search and processing without translation.

Text Analytics extracts events and entities — people, organizations, and places — from unstructured text and adds the
structure of associating those entities into events that deliver only the necessary information for near real-time
decision making. Accompanying tools shorten the process of training AI models to recognize domain-specific events.

The product delivers a multitude of ways to sharpen and expand search results. Semantic similarity expands search
beyond keywords to words with the same meaning, even in other languages. Sentiment analysis and topic extraction help
filter results to what’s relevant.

## Rosette API Access
- Rosette Cloud [Sign Up](https://developer.rosette.com/signup)
## Analytics API Access
- Analytics Cloud [Sign Up](https://developer.babelstreet.com/signup)

## Quick Start

#### Installation
If you use Nuget, you may use either Visual Studio's Nuget package manager or command line to install the Rosette API binding.
If you use Nuget, you may use either Visual Studio's Nuget package manager or command line to install the Analytics API binding.

In Visual Studio: search for the [rosette_api package](https://www.nuget.org/packages/rosette_api/) in Nuget and follow the installation instructions.

Expand All @@ -30,16 +47,24 @@ in the [examples](https://github.com/rosette-api/csharp/tree/develop/rosette_api

#### Documentation & Support
- [Binding API](https://rosette-api.github.io/csharp/)
- [Rosette Platform API](https://docs.babelstreet.com/API/en/index-en.html)
- [Analytics Platform API](https://docs.babelstreet.com/API/en/index-en.html)
- [Binding Release Notes](https://github.com/rosette-api/csharp/wiki/Release-Notes)
- [Rosette Platform Release Notes](https://babelstreet.my.site.com/support/s/article/Rosette-Cloud-Release-Notes)
- [Analytics Platform Release Notes](https://docs.babelstreet.com/Release/en/rosette-cloud.html)
- [Support](https://babelstreet.my.site.com/support/s/)
- [Binding License: Apache 2.0](https://github.com/rosette-api/csharp/blob/develop/LICENSE.txt)

## Concurrency
The C# binding uses HttpClient to manage connectivity and concurrency. By default, .NET sets the default connection limit to 2, which is the same as the Rosette API default limit. For Rosette API plans that allow for higher concurrency, the internal HTTP client will adjust automatically to the higher number. If a user chooses to provide their own HTTP client, no adjustment will be made. In this case it is up to the user to set `ServicePointManager.DefaultConnectionLimit` to the Rosette API concurrency level prior to instantiating the CAPI object.

For multithreaded operations, do not instantiate a new CAPI object for each thread. The objects will not share the connection limit and `429 too many requests` errors are likely to occur. Rather, so that the underlying HttpClient can manage the queueing of the requests across all threads, instantiate a CAPI object and pass it to each thread. If it is necessary to instantiate a CAPI object on each thread, first create an HttpClient object, either by retrieving it from an instance of CAPI via the `Client` property or by creating your own HTTP client and passing it into each thread for use by the CAPI constructor.
The C# binding uses HttpClient to manage connectivity and concurrency. By default, .NET sets the default connection
limit to 2, which is the same as the Analytics API default limit. For Analytics API plans that allow for higher
concurrency, the internal HTTP client will adjust automatically to the higher number. If a user chooses to provide
their own HTTP client, no adjustment will be made. In this case it is up to the user to set
`ServicePointManager.DefaultConnectionLimit` to the Analytics API concurrency level prior to instantiating the CAPI object.

For multithreaded operations, do not instantiate a new CAPI object for each thread. The objects will not share the
connection limit and `429 too many requests` errors are likely to occur. Rather, so that the underlying HttpClient can
manage the queueing of the requests across all threads, instantiate a CAPI object and pass it to each thread. If it is
necessary to instantiate a CAPI object on each thread, first create an HttpClient object, either by retrieving it from
an instance of CAPI via the `Client` property or by creating your own HTTP client and passing it into each thread for use by the CAPI constructor.

#### Example of using a common CAPI object for each thread:
```
Expand Down
2 changes: 1 addition & 1 deletion recompile.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ do
csc "${filename}.cs" /r:rosette_api.dll /r:System.Net.Http.dll /r:System.Web.Extensions.dll /r:Newtonsoft.Json.dll
# if last command is empty then exit
if [ $? -eq 0 ]; then
mono "${filename}.exe"
mono "${filename}.exe" $API_KEY $ALT_URL
fi
else
echo "####> File ${filename}.cs not found in rosette_apiExamples directory"
Expand Down
2 changes: 1 addition & 1 deletion rosette_api/AddressSimilarityResponse.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
namespace rosette_api
{
/// <summary>
/// A class to represnt the results from the Name Similarity endpoint of the Rosette API
/// A class to represent the results from the Address Similarity endpoint of the Analytics API
/// </summary>
[JsonObject(MemberSerialization.OptOut)]
public class AddressSimilarityResponse : RosetteResponse
Expand Down
Loading

0 comments on commit aeb9930

Please sign in to comment.