Crypto Like

Crypto Like

1632970369

What is Magic Internet Money (MIM) | What is MIM token

In this article, we'll discuss information about the Magic Internet Money project and MIM token.

Abracadabra.money is a lending platform that uses interest-bearing tokens (ibTKNs) as collateral to borrow a USD pegged stablecoin (Magic Internet Money - MIM), that can be used as any other traditional stablecoin.

Currently, a lot of assets, such as yVaults have locked in capital that can't be put to further use. Abracadabra offers an opportunity to use it.

Ecosystem

Governance

Since day one, abracadabra strives towards decentralization! Find here all the details regarding the governance system of our platform!

Snapshot page

The governance of abracadabra.money happens through a snapshot page that can be found here.

Once a proposal is passed, the team will consider it and implement it!

Voting power is given by holding sSPELL tokens (either in your wallet, as collateral in our sSPELL lending market or in any other contracts recognised by Abracadabra) or SPELL/ETH Sushiswap LP tokens(deposited in our farm)!

The Olympus Pro Program

The partnership between Abracadabra and Olympus DAO!

We have partnered with Olympus DAO, in order to provide the possibility to our users to buy SPELL tokens using ETH-SPELL SLP tokens!

What is Olympus Pro?

​Olympus Pro is one of the latest products coming from Olympus DAO! Olympus Pro allows users to buy discounted SPELL tokens in exchange for ETH-SPELL LP tokens, which will then be redirected to Abracadabra treasury, in order to start building up our own liquidity. This happens through a process called bonding.

If you want to read more about Olympus Pro, make sure to have a read at their documentation here.

How will our program work:

Our Bonding program with Olympus Pro has started on the 29th of September 2021. It will allow our protocol to acquire liquidity, buying it from users, using SPELL emissions! If you are not familiar with how bonding works, you can have a read at Olympus Pro Documentation here.

If you want to purchase a bond and receive discounted SPELL tokens, you will need to firstly have in wallet ETH-SPELL SLP tokens, and then go to the Olympus Pro page here. Here you will be able to purchase a bond using the same UI as Olympus has for its own OHM bond! After the vesting period, you will then be able to claim your SPELL rewards, following this tutorial here.

We have set the emission for this product to 50m SPELL per week!

The Benefit to our platform:

Every time a bond is purchased, the users SLP tokens are sent to a team managed treasury. This liquidity is called POL (Protocol Owned Liquidity)! Having control over these SLP tokens allows us to build up liquidity, while reducing the farm incentives over time, resulting in less dilution and a more sustainable system!

As a user, this brings you many advantages! First of all, you will be able to buy SPELL at a discounted rate compared to the market price, secondly you will have no exposure to Impermanent Loss, and thirdly you can rest assured that some level of liquidity for the pair ETH-SPELL will always be available, allowing you to cheaply trade your SPELL tokens! 

Tokenomics

Abracadabra has 3 main tokens.

SPELL: the protocol's token which is used for incentivization.

sSPELL: obtained by staking SPELL tokens and used for fee-sharing and governance!

MIM: a USD pegged stable coin

The SPELL Token

Token Symbol: SPELL 

Token Address Ethereum: 0x090185f2135308BaD17527004364eBcC2D37e5F6 

Total Supply: 210,000,000,000 SPELL (initial burn halved the supply)

Token Burn:

The total Supply of SPELL has been reduced from 420B SPELL to 210B SPELL by performing a unique token burn event. 210B SPELL was minted to the SPELL contract itself. The contract has no way of accessing these tokens which ultimately turns the Token Smart Contract into a Burn Address. This burn event has been publicly announced on Twitter by our main dev 0xm3rlin.

Token Burn Tx Hash: 0x01bdb6c4b22b9c8b82c9074772e95818e4680e4c8a71df5b0151e321f8048417​

SPELL Token Distribution:

45% (94.5B SPELL): MIM-3LP3CRV Liquidity Incentive

30% (63.0B SPELL): Team allocation (4 Year Vesting Schedule)

18% (37.8B SPELL): ETH-SPELL Sushiswap Liquidity Incentive

7% (14.7B SPELL): Initial DEX Offering SPELL tokens are distributed as follows:

45% of the total supply is distributed to the stakers of MIM-3LP3CRV, in order to keep deep liquidity in the pool and make sure that Wizards will always be able to swap their MIMs for USDT, DAI, or USDC. A 10 Year halving model will be followed, which will cut in half the rewards distributed every year.

18% of the total supply is distributed between the stakers of ETH-SPELL Sushiswap LP tokens. 75% of this amount will be distributed in the first year, the rest in the second year.

7% of the total supply has been distributed via an IDO, half on Uniswap v3 and half on Sushiswap.

30% of the total supply is allocated to the team members which is vested as follows:

SPELL Token Farming Emissions

The SPELL token is used to incentivize users, in order to keep deep liquidity on our markets! The current emissions per week are:

MIM + 3Crv Curve LP on Ethereum Mainnet: 528,885,504 SPELL

ETH-SPELL SLP on Ethereum Mainnet: 203,613,440 SPELL

Bribes System: 145,530,726 SPELL

MIM-ETH SLP on Arbitrum: 169,102,080 SPELL

ETH-SPELL SLP on Arbitrum: 121,620,244 SPELL

MIM + 2Crv Curve LP on Arbitrum: 132,221,376 SPELL

Olympus Pro Programm: 50,000,000 SPELL

MIM Pool on FTM (to be activated): 100,903,360 SPELL

Total of 1,451,876,730 SPELL per week currently emitted!

The sSPELL Token

You can stake and lock your SPELL to get sSPELL using the Wizard Dashboard! Staking SPELL has a 24 hour time lock (Every time a user stakes SPELL token, he will not be able to withdraw for the next 24 hours).

The token address for sSPELL is 0x26fa3fffb6efe8c1e69103acb4044c26b9a106a9.

Firstly fees (interest, borrow fee and 10% of the liquidation fee for certain markets) are deposited in the SPELL fee pool in the form of SPELL tokens. When users single-side stake their SPELL tokens they receive sSPELL tokens. sSPELL tokens represent your share of the SPELL fee pool with a mechanism similar to the SUSHI/xSUSHI one. 10% of all liquidation fees are also hardcoded to be taken out and used to purchase SPELL tokens in certain markets. These SPELL tokens are also added to the SPELL fee pool.

Your sSPELL tokens are continuously compounding! When you unstake, you will receive all the originally deposited SPELL tokens plus any additional SPELL earned from the fees.

sSPELL will also allow wizards to take part in governance as soon as the governance portal will be live.

The MIM Token

The Magic Internet Money token is a USD pegged stable coin that is backed by interest bearing tokens with the following contract address: 0x99D8a9C45b2ecA8864373A26D1459e3Dff1e17F3​

Abracadabra always considers this token to be worth 1USD. MIM is a multichain token, find the MIM address on the other chains here:

Use Anyswap to bridge MIM across different networks! Find MIM addresses across different chains here!

The MIM Price Peg

Since MIM is a USD pegged stable coin, it needs to remain pegged to the USD. The mechanics used rely on arbitrage, keeping it simple. This can happen in several ways.

Users that hold debt, in MIM, might notice that MIM is trading on some market below 1 USD and decide to buy some MIM at this discount to repay some of their debt. This purchase of MIM will have a price rising effect relative to their volume.

Users that hold components (valid collateral), might notice that MIM is trading on some market above 1 USD and decide to open a position and sell the MIM borrowed to put to use elsewhere. This transaction will have a price lowering effect relative to their volume.

Users that hold other cryptocurrencies, (stablecoins or not) might see MIM trading differently on two of the above mentioned markets and decide to buy MIM on one market where the price is below 1USD and sell on another where the price is either at 1USD or above. This can also happen in reverse.

In most cases, a lot of the Market to Market arbitrage is done by automated bots that constantly monitor pools for opportunities to capitalize on these price differences. This has the benefit of having price pegs being corrected quite rapidly.

MIM tokens are minted by a Multisign, deposited in the Kashi Markets smart contracts, and then injected into circulation only after the user deposits the collaterals!

How and Where to Buy MIM token?

MIM has been listed on a number of crypto exchanges, unlike other main cryptocurrencies, it cannot be directly purchased with fiats money. However, You can still easily buy this coin by first buying Bitcoin, ETH, USDT, BNB from any large exchanges and then transfer to the exchange that offers to trade this coin, in this guide article we will walk you through in detail the steps to buy MIM token.

You will have to first buy one of the major cryptocurrencies, usually either Bitcoin (BTC), Ethereum (ETH), Tether (USDT), Binance (BNB)…

We will use Binance Exchange here as it is one of the largest crypto exchanges that accept fiat deposits.

Binance is a popular cryptocurrency exchange which was started in China but then moved their headquarters to the crypto-friendly Island of Malta in the EU. Binance is popular for its crypto to crypto exchange services. Binance exploded onto the scene in the mania of 2017 and has since gone on to become the top crypto exchange in the world.

Once you finished the KYC process. You will be asked to add a payment method. Here you can either choose to provide a credit/debit card or use a bank transfer, and buy one of the major cryptocurrencies, usually either Bitcoin (BTC), Ethereum (ETH), Tether (USDT), Binance (BNB)…

☞ SIGN UP ON BINANCE

Step by Step Guide : What is Binance | How to Create an account on Binance (Updated 2021)

Next step - Transfer your cryptos to an Altcoin Exchange

Since MIM is an altcoin we need to transfer our coins to an exchange that HIGH can be traded. Below is a list of exchanges that offers to trade MIM in various market pairs, head to their websites and register for an account.

Once finished you will then need to make a BTC/ETH/USDT/BNB deposit to the exchange from Binance depending on the available market pairs. After the deposit is confirmed you may then purchase MIM from the exchange.

ETH Contract: 0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3

The top exchange for trading in MIM token is currently:  Uniswap (V3), Hoo, Bitfinex, PancakeSwap (V2), and SushiSwap

Find more information MIM token

☞ Website ☞ Explorer ☞ Social Channel ☞ Social Channel 2 ☞ Social Channel 3Coinmarketcap

Top exchanges for token-coin trading. Follow instructions and make unlimited money

BinanceBittrexPoloniex ☞  ☞ HuobiMXCProBITGate.ioCoinbase

🔺DISCLAIMER: The Information in the post isn’t financial advice, is intended FOR GENERAL INFORMATION PURPOSES ONLY. Trading Cryptocurrency is VERY risky. Make sure you understand these risks and that you are responsible for what you do with your money.

🔥 If you’re a beginner. I believe the article below will be useful to you ☞ What You Should Know Before Investing in Cryptocurrency - For Beginner

⭐ ⭐ ⭐The project is of interest to the community. Join to Get free ‘GEEK coin’ (GEEKCASH coin)!

☞ **-----https://geekcash.org-----**⭐ ⭐ ⭐

I hope this post will help you. Don't forget to leave a like, comment and sharing it with others. Thank you!

#bitcoin #cryptocurrency

What is GEEK

Buddha Community

What is Magic Internet Money (MIM) | What is MIM token
Shawn  Durgan

Shawn Durgan

1604050560

Are the days of Internet Freedom Numbered?

In an ideal digital world, everyone has open access to the Internet.

In that world, all traffic is treated equally without any blocking, prioritization, or discrimination.

That ideal world is one where there is widespread support for an open Internet that ensures that publicly available information is equally transmittable from - and accessible to - all people and businesses.

An open network ensures equal accessibility. Network (net) neutrality is a principle based on the idea that all communications on the Internet should be treated equally. It opposes any potential power that some organizations may have to implement different charges or vary service quality. Such actions can be based on a set of factors that include content, platform, application type, source address, destination address or communication method.

In essence, net neutrality demands that all data on the Internet travels over networks in a fair way that ensures that no specific sites, services or applications get favourable service in terms of speed or bandwidth. It also ensures that all traffic - no matter where it’s from - gets the same service.

Is the Internet fair?

The Internet is simply a network of computers sharing information.

A better question to ask would be if ISPs are acting in a fair way.

As the intermediaries between users and the sources of information on the Internet, some large-scale ISPs wield a great deal of power.

Some have been known to tamper with traffic using “middleware” that affects the flow of information. Others act as private gatekeepers that subject content to additional controls throughout the network by giving optimal bandwidth to certain sites, apps and services while slowing down or completely blocking specific protocols or applications.

#internet-day #net-neutrality #open-internet #internet #fix-the-internet #history-of-the-internet #internet-censorship

The Future of the Internet - What are Gs and How Long will They Count? - TopDevelopers.co

A peek into the History and Future of the internet with brief insights on how the changing technologies have paved the path and changed the lives of humankind.

#generations of the internet #communication technologies #internet as a technology #history of the internet #future of the internet #internet

Words Counted: A Ruby Natural Language Processor.

WordsCounted

We are all in the gutter, but some of us are looking at the stars.

-- Oscar Wilde

WordsCounted is a Ruby NLP (natural language processor). WordsCounted lets you implement powerful tokensation strategies with a very flexible tokeniser class.

Are you using WordsCounted to do something interesting? Please tell me about it.

 

Demo

Visit this website for one example of what you can do with WordsCounted.

Features

  • Out of the box, get the following data from any string or readable file, or URL:
    • Token count and unique token count
    • Token densities, frequencies, and lengths
    • Char count and average chars per token
    • The longest tokens and their lengths
    • The most frequent tokens and their frequencies.
  • A flexible way to exclude tokens from the tokeniser. You can pass a string, regexp, symbol, lambda, or an array of any combination of those types for powerful tokenisation strategies.
  • Pass your own regexp rules to the tokeniser if you prefer. The default regexp filters special characters but keeps hyphens and apostrophes. It also plays nicely with diacritics (UTF and unicode characters): Bayrūt is treated as ["Bayrūt"] and not ["Bayr", "ū", "t"], for example.
  • Opens and reads files. Pass in a file path or a url instead of a string.

Installation

Add this line to your application's Gemfile:

gem 'words_counted'

And then execute:

$ bundle

Or install it yourself as:

$ gem install words_counted

Usage

Pass in a string or a file path, and an optional filter and/or regexp.

counter = WordsCounted.count(
  "We are all in the gutter, but some of us are looking at the stars."
)

# Using a file
counter = WordsCounted.from_file("path/or/url/to/my/file.txt")

.count and .from_file are convenience methods that take an input, tokenise it, and return an instance of WordsCounted::Counter initialized with the tokens. The WordsCounted::Tokeniser and WordsCounted::Counter classes can be used alone, however.

API

WordsCounted

WordsCounted.count(input, options = {})

Tokenises input and initializes a WordsCounted::Counter object with the resulting tokens.

counter = WordsCounted.count("Hello Beirut!")

Accepts two options: exclude and regexp. See Excluding tokens from the analyser and Passing in a custom regexp respectively.

WordsCounted.from_file(path, options = {})

Reads and tokenises a file, and initializes a WordsCounted::Counter object with the resulting tokens.

counter = WordsCounted.from_file("hello_beirut.txt")

Accepts the same options as .count.

Tokeniser

The tokeniser allows you to tokenise text in a variety of ways. You can pass in your own rules for tokenisation, and apply a powerful filter with any combination of rules as long as they can boil down into a lambda.

Out of the box the tokeniser includes only alpha chars. Hyphenated tokens and tokens with apostrophes are considered a single token.

#tokenise([pattern: TOKEN_REGEXP, exclude: nil])

tokeniser = WordsCounted::Tokeniser.new("Hello Beirut!").tokenise

# With `exclude`
tokeniser = WordsCounted::Tokeniser.new("Hello Beirut!").tokenise(exclude: "hello")

# With `pattern`
tokeniser = WordsCounted::Tokeniser.new("I <3 Beirut!").tokenise(pattern: /[a-z]/i)

See Excluding tokens from the analyser and Passing in a custom regexp for more information.

Counter

The WordsCounted::Counter class allows you to collect various statistics from an array of tokens.

#token_count

Returns the token count of a given string.

counter.token_count #=> 15

#token_frequency

Returns a sorted (unstable) two-dimensional array where each element is a token and its frequency. The array is sorted by frequency in descending order.

counter.token_frequency

[
  ["the", 2],
  ["are", 2],
  ["we",  1],
  # ...
  ["all", 1]
]

#most_frequent_tokens

Returns a hash where each key-value pair is a token and its frequency.

counter.most_frequent_tokens

{ "are" => 2, "the" => 2 }

#token_lengths

Returns a sorted (unstable) two-dimentional array where each element contains a token and its length. The array is sorted by length in descending order.

counter.token_lengths

[
  ["looking", 7],
  ["gutter",  6],
  ["stars",   5],
  # ...
  ["in",      2]
]

#longest_tokens

Returns a hash where each key-value pair is a token and its length.

counter.longest_tokens

{ "looking" => 7 }

#token_density([ precision: 2 ])

Returns a sorted (unstable) two-dimentional array where each element contains a token and its density as a float, rounded to a precision of two. The array is sorted by density in descending order. It accepts a precision argument, which must be a float.

counter.token_density

[
  ["are",     0.13],
  ["the",     0.13],
  ["but",     0.07 ],
  # ...
  ["we",      0.07 ]
]

#char_count

Returns the char count of tokens.

counter.char_count #=> 76

#average_chars_per_token([ precision: 2 ])

Returns the average char count per token rounded to two decimal places. Accepts a precision argument which defaults to two. Precision must be a float.

counter.average_chars_per_token #=> 4

#uniq_token_count

Returns the number of unique tokens.

counter.uniq_token_count #=> 13

Excluding tokens from the tokeniser

You can exclude anything you want from the input by passing the exclude option. The exclude option accepts a variety of filters and is extremely flexible.

  1. A space-delimited string. The filter will normalise the string.
  2. A regular expression.
  3. A lambda.
  4. A symbol that names a predicate method. For example :odd?.
  5. An array of any combination of the above.
tokeniser =
  WordsCounted::Tokeniser.new(
    "Magnificent! That was magnificent, Trevor."
  )

# Using a string
tokeniser.tokenise(exclude: "was magnificent")
# => ["that", "trevor"]

# Using a regular expression
tokeniser.tokenise(exclude: /trevor/)
# => ["magnificent", "that", "was", "magnificent"]

# Using a lambda
tokeniser.tokenise(exclude: ->(t) { t.length < 4 })
# => ["magnificent", "that", "magnificent", "trevor"]

# Using symbol
tokeniser = WordsCounted::Tokeniser.new("Hello! محمد")
tokeniser.tokenise(exclude: :ascii_only?)
# => ["محمد"]

# Using an array
tokeniser = WordsCounted::Tokeniser.new(
  "Hello! اسماءنا هي محمد، كارولينا، سامي، وداني"
)
tokeniser.tokenise(
  exclude: [:ascii_only?, /محمد/, ->(t) { t.length > 6}, "و"]
)
# => ["هي", "سامي", "وداني"]

Passing in a custom regexp

The default regexp accounts for letters, hyphenated tokens, and apostrophes. This means twenty-one is treated as one token. So is Mohamad's.

/[\p{Alpha}\-']+/

You can pass your own criteria as a Ruby regular expression to split your string as desired.

For example, if you wanted to include numbers, you can override the regular expression:

counter = WordsCounted.count("Numbers 1, 2, and 3", pattern: /[\p{Alnum}\-']+/)
counter.tokens
#=> ["numbers", "1", "2", "and", "3"]

Opening and reading files

Use the from_file method to open files. from_file accepts the same options as .count. The file path can be a URL.

counter = WordsCounted.from_file("url/or/path/to/file.text")

Gotchas

A hyphen used in leu of an em or en dash will form part of the token. This affects the tokeniser algorithm.

counter = WordsCounted.count("How do you do?-you are well, I see.")
counter.token_frequency

[
  ["do",   2],
  ["how",  1],
  ["you",  1],
  ["-you", 1], # WTF, mate!
  ["are",  1],
  # ...
]

In this example -you and you are separate tokens. Also, the tokeniser does not include numbers by default. Remember that you can pass your own regular expression if the default behaviour does not fit your needs.

A note on case sensitivity

The program will normalise (downcase) all incoming strings for consistency and filters.

Roadmap

Ability to open URLs

def self.from_url
  # open url and send string here after removing html
end

Contributors

See contributors.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Author: abitdodgy
Source code: https://github.com/abitdodgy/words_counted
License: MIT license

#ruby  #ruby-on-rails 

Royce  Reinger

Royce Reinger

1658068560

WordsCounted: A Ruby Natural Language Processor

WordsCounted

We are all in the gutter, but some of us are looking at the stars.

-- Oscar Wilde

WordsCounted is a Ruby NLP (natural language processor). WordsCounted lets you implement powerful tokensation strategies with a very flexible tokeniser class.

Features

  • Out of the box, get the following data from any string or readable file, or URL:
    • Token count and unique token count
    • Token densities, frequencies, and lengths
    • Char count and average chars per token
    • The longest tokens and their lengths
    • The most frequent tokens and their frequencies.
  • A flexible way to exclude tokens from the tokeniser. You can pass a string, regexp, symbol, lambda, or an array of any combination of those types for powerful tokenisation strategies.
  • Pass your own regexp rules to the tokeniser if you prefer. The default regexp filters special characters but keeps hyphens and apostrophes. It also plays nicely with diacritics (UTF and unicode characters): Bayrūt is treated as ["Bayrūt"] and not ["Bayr", "ū", "t"], for example.
  • Opens and reads files. Pass in a file path or a url instead of a string.

Installation

Add this line to your application's Gemfile:

gem 'words_counted'

And then execute:

$ bundle

Or install it yourself as:

$ gem install words_counted

Usage

Pass in a string or a file path, and an optional filter and/or regexp.

counter = WordsCounted.count(
  "We are all in the gutter, but some of us are looking at the stars."
)

# Using a file
counter = WordsCounted.from_file("path/or/url/to/my/file.txt")

.count and .from_file are convenience methods that take an input, tokenise it, and return an instance of WordsCounted::Counter initialized with the tokens. The WordsCounted::Tokeniser and WordsCounted::Counter classes can be used alone, however.

API

WordsCounted

WordsCounted.count(input, options = {})

Tokenises input and initializes a WordsCounted::Counter object with the resulting tokens.

counter = WordsCounted.count("Hello Beirut!")

Accepts two options: exclude and regexp. See Excluding tokens from the analyser and Passing in a custom regexp respectively.

WordsCounted.from_file(path, options = {})

Reads and tokenises a file, and initializes a WordsCounted::Counter object with the resulting tokens.

counter = WordsCounted.from_file("hello_beirut.txt")

Accepts the same options as .count.

Tokeniser

The tokeniser allows you to tokenise text in a variety of ways. You can pass in your own rules for tokenisation, and apply a powerful filter with any combination of rules as long as they can boil down into a lambda.

Out of the box the tokeniser includes only alpha chars. Hyphenated tokens and tokens with apostrophes are considered a single token.

#tokenise([pattern: TOKEN_REGEXP, exclude: nil])

tokeniser = WordsCounted::Tokeniser.new("Hello Beirut!").tokenise

# With `exclude`
tokeniser = WordsCounted::Tokeniser.new("Hello Beirut!").tokenise(exclude: "hello")

# With `pattern`
tokeniser = WordsCounted::Tokeniser.new("I <3 Beirut!").tokenise(pattern: /[a-z]/i)

See Excluding tokens from the analyser and Passing in a custom regexp for more information.

Counter

The WordsCounted::Counter class allows you to collect various statistics from an array of tokens.

#token_count

Returns the token count of a given string.

counter.token_count #=> 15

#token_frequency

Returns a sorted (unstable) two-dimensional array where each element is a token and its frequency. The array is sorted by frequency in descending order.

counter.token_frequency

[
  ["the", 2],
  ["are", 2],
  ["we",  1],
  # ...
  ["all", 1]
]

#most_frequent_tokens

Returns a hash where each key-value pair is a token and its frequency.

counter.most_frequent_tokens

{ "are" => 2, "the" => 2 }

#token_lengths

Returns a sorted (unstable) two-dimentional array where each element contains a token and its length. The array is sorted by length in descending order.

counter.token_lengths

[
  ["looking", 7],
  ["gutter",  6],
  ["stars",   5],
  # ...
  ["in",      2]
]

#longest_tokens

Returns a hash where each key-value pair is a token and its length.

counter.longest_tokens

{ "looking" => 7 }

#token_density([ precision: 2 ])

Returns a sorted (unstable) two-dimentional array where each element contains a token and its density as a float, rounded to a precision of two. The array is sorted by density in descending order. It accepts a precision argument, which must be a float.

counter.token_density

[
  ["are",     0.13],
  ["the",     0.13],
  ["but",     0.07 ],
  # ...
  ["we",      0.07 ]
]

#char_count

Returns the char count of tokens.

counter.char_count #=> 76

#average_chars_per_token([ precision: 2 ])

Returns the average char count per token rounded to two decimal places. Accepts a precision argument which defaults to two. Precision must be a float.

counter.average_chars_per_token #=> 4

#uniq_token_count

Returns the number of unique tokens.

counter.uniq_token_count #=> 13

Excluding tokens from the tokeniser

You can exclude anything you want from the input by passing the exclude option. The exclude option accepts a variety of filters and is extremely flexible.

  1. A space-delimited string. The filter will normalise the string.
  2. A regular expression.
  3. A lambda.
  4. A symbol that names a predicate method. For example :odd?.
  5. An array of any combination of the above.
tokeniser =
  WordsCounted::Tokeniser.new(
    "Magnificent! That was magnificent, Trevor."
  )

# Using a string
tokeniser.tokenise(exclude: "was magnificent")
# => ["that", "trevor"]

# Using a regular expression
tokeniser.tokenise(exclude: /trevor/)
# => ["magnificent", "that", "was", "magnificent"]

# Using a lambda
tokeniser.tokenise(exclude: ->(t) { t.length < 4 })
# => ["magnificent", "that", "magnificent", "trevor"]

# Using symbol
tokeniser = WordsCounted::Tokeniser.new("Hello! محمد")
tokeniser.tokenise(exclude: :ascii_only?)
# => ["محمد"]

# Using an array
tokeniser = WordsCounted::Tokeniser.new(
  "Hello! اسماءنا هي محمد، كارولينا، سامي، وداني"
)
tokeniser.tokenise(
  exclude: [:ascii_only?, /محمد/, ->(t) { t.length > 6}, "و"]
)
# => ["هي", "سامي", "وداني"]

Passing in a custom regexp

The default regexp accounts for letters, hyphenated tokens, and apostrophes. This means twenty-one is treated as one token. So is Mohamad's.

/[\p{Alpha}\-']+/

You can pass your own criteria as a Ruby regular expression to split your string as desired.

For example, if you wanted to include numbers, you can override the regular expression:

counter = WordsCounted.count("Numbers 1, 2, and 3", pattern: /[\p{Alnum}\-']+/)
counter.tokens
#=> ["numbers", "1", "2", "and", "3"]

Opening and reading files

Use the from_file method to open files. from_file accepts the same options as .count. The file path can be a URL.

counter = WordsCounted.from_file("url/or/path/to/file.text")

Gotchas

A hyphen used in leu of an em or en dash will form part of the token. This affects the tokeniser algorithm.

counter = WordsCounted.count("How do you do?-you are well, I see.")
counter.token_frequency

[
  ["do",   2],
  ["how",  1],
  ["you",  1],
  ["-you", 1], # WTF, mate!
  ["are",  1],
  # ...
]

In this example -you and you are separate tokens. Also, the tokeniser does not include numbers by default. Remember that you can pass your own regular expression if the default behaviour does not fit your needs.

A note on case sensitivity

The program will normalise (downcase) all incoming strings for consistency and filters.

Roadmap

Ability to open URLs

def self.from_url
  # open url and send string here after removing html
end

Are you using WordsCounted to do something interesting? Please tell me about it.

Gem Version 

RubyDoc documentation.

Demo

Visit this website for one example of what you can do with WordsCounted.


Contributors

See contributors.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Author: Abitdodgy
Source Code: https://github.com/abitdodgy/words_counted 
License: MIT license

#ruby #nlp 

aaron silva

aaron silva

1622197808

SafeMoon Clone | Create A DeFi Token Like SafeMoon | DeFi token like SafeMoon

SafeMoon is a decentralized finance (DeFi) token. This token consists of RFI tokenomics and auto-liquidity generating protocol. A DeFi token like SafeMoon has reached the mainstream standards under the Binance Smart Chain. Its success and popularity have been immense, thus, making the majority of the business firms adopt this style of cryptocurrency as an alternative.

A DeFi token like SafeMoon is almost similar to the other crypto-token, but the only difference being that it charges a 10% transaction fee from the users who sell their tokens, in which 5% of the fee is distributed to the remaining SafeMoon owners. This feature rewards the owners for holding onto their tokens.

Read More @ https://bit.ly/3oFbJoJ

#create a defi token like safemoon #defi token like safemoon #safemoon token #safemoon token clone #defi token