Crypto Like

Crypto Like

1609828425

What is Chi Gastoken (CHI) | What is CHI token

To execute a 1inch punch, you need power, in Asian Martial Arts it is called as  Chi / Qi, whose equivalent in the crypto space is our new Chi Gastoken. Now, any user can burn their Chi tokens and thereby save on gas.

What is a Gastoken?

Every transaction on the Ethereum network requires some gas. A Gastoken facilitates transactions with the same amount of work but less gas. A Gastoken takes advantage of the Ethereum storage refund, see  Ethereum Yellow Paper. To encourage smart contracts to erase unnecessary storage, Ethereum provides a refund for each zeroed element. So, in the process of burning, a Gastoken’s smart contract erases storage that were filled during minting. The most efficient storage gas refunds are achieved by creating and destroying sub smart contract, not by direct writes and erases of the storage.

The idea for the Chi token is based on the original Gastoken GST2 implementation. We saw that there were ways to improve the efficiency with:

  • Reducing the smart contract address size by mining a private key with  Profanity address generator, which allowed us to decrease size of the sub smart contracts by 1 byte.
  • Using CREATE2 instruction to deploy sub smart contracts for their efficient address discovery during burning process.
  • Fixing ERC20 incompatibilities of GST2

How much is Chi better than GST2?

The Chi token is 1% more optimized for minting, and 10% more efficient for burning.

Image for post

Gastokens efficiency comparison. See  https://www.desmos.com/calculator/9z3hnwzbbl

y = 15000 * x / (20065 + 5065 * x) // GST1
y = 24000 * x / (35974 + 6689 * x) // GST2
y = 24000 * x / (35678 + 6053 * x) // CHI

How Chi can be used?

The deployment of a Ethereum smart contract requires substantial gas, and it could cost you for example between $5 and $10 per million of gas, while regular smart contract could have size of several millions of gas. But burning Chi tokens in the same transaction would reduce these costs by almost the half.

We have built on  ETHGlobal HackMoney Online Hackathon such a tool called  Deployer.eth.

The support of Chi token can be integrated in any smart contract with just a few lines of code by using following modifier:

modifier discountCHI {
    uint256 gasStart = gasleft();
    _;
    uint256 gasSpent = 21000 + gasStart — gasleft() + 16 *
                       msg.data.length;
    chi.freeFromUpTo(msg.sender, (gasSpent + 14154) / 41947);
}

In this case, Chi tokens will be burned from the caller’s wallet (Chi tokens should be approved to the contract by the user).

In case of burning Chi tokens from the contract itself (rather than from a user’s wallet), you need to change msg.sender in the chi.freeFromUpTo function to address(this). And don’t forget to top up your contract with Chi tokens.

How can you mint Chi tokens?

You can mint Chi tokens directly on Etherscan. Another option is  the Chi Minter on 1inch. To use it, you need to deactivate all exchanges, except for the Chi minter.

Image for post

Chi Minter on 1inch

The maximum minting limit is 140 Chi tokens, which, in turn, is explained by the block limit. We deliberately use about one half of the block, so that miners won’t reject this type of transaction, which is less profitable for them.

If, for instance, you swap 1 ETH using Chi Minter, you get 140 Chi tokens and pay 20 GWEI for gas. But we won’t spend the entire 1 ETH as the minting of 140 Chi tokens doesn’t cost that much. Only what is actually spent will be spent:

5,125,271 gas x 20 GWEI = 5125271*20*1e9/1e18 = 0.10250542 ETH 

So, only about 0.1 ETH will be spent, rather than 1 ETH.

One other thing. When you mint Chi tokens and indicate a low gas price, your wallet will be blocked. Therefore, we advise that you use a separate wallet specifically for minting Chi tokens.

How can you trade Chi Gastoken

It is also possible to trade Chi token on 1inch. For that you need to select Chi in the from token drop down and a token you wish to get in the to token dropdown. 1inch find the best place where to sell your Chi token.

Very important to understand for everyone:

Imagine Chi token as tokenized version of actual gas price on Ethereum. Means if the gas price grow. Chi token price also grow. If gas price in Ethereum drops, the same would also happen with Chi.

Image for post

Selling Chi token on 1inch for the best market price

Of course you can set a limit order on 1inch with the rate you wish.

Image for post

Limit order on 1inch

How to deploy a smart contract with less gas costs?

You need to approve the  Chi token to deployer.eth. To do that, go to the _Write Contract _section on Chi. Find the approve function and trigger it with the deployer.eth address and approval amount.

Image for post

Click on the _Deploy _button on  remix.ide and copy data to deploy (0x6080604…). Don’t click on confirm.

Image for post

Image for post

Go to the _Write Contract _section on the  deployer.eth contract and paste the deploy data to chiDeploy for Chi burning. Click Write and confirm the transaction in the popup MetaMask window.

Image for post

Here we are! Only 51.18% of gas was used and 6 Chi tokens were burned.

Image for post

Finally, go to the _Internal Transactions _section. There, you can find the deployed contract address. Just find _create_0 _below the Type Trace Address. In this line, below the _To _column you can see the deployed contract address.

Image for post

Now go ahead and check out Chi for yourself!

Read more ☞ What is 1inch (1INCH) | What is 1inch Exchange | What is 1INCH token

Would you like to earn CHI token right now! ☞ CLICK HERE

Looking for more information…

☞ Website
☞ Explorer
☞ Source Code
☞ Coinmarketcap

Thank for visiting and reading this article! I’m highly appreciate your actions! Please share if you liked it!

#blockchain #bitcoin #crypto #chi gastoken #chi

What is GEEK

Buddha Community

What is Chi Gastoken (CHI) | What is CHI token
Crypto Like

Crypto Like

1609828425

What is Chi Gastoken (CHI) | What is CHI token

To execute a 1inch punch, you need power, in Asian Martial Arts it is called as  Chi / Qi, whose equivalent in the crypto space is our new Chi Gastoken. Now, any user can burn their Chi tokens and thereby save on gas.

What is a Gastoken?

Every transaction on the Ethereum network requires some gas. A Gastoken facilitates transactions with the same amount of work but less gas. A Gastoken takes advantage of the Ethereum storage refund, see  Ethereum Yellow Paper. To encourage smart contracts to erase unnecessary storage, Ethereum provides a refund for each zeroed element. So, in the process of burning, a Gastoken’s smart contract erases storage that were filled during minting. The most efficient storage gas refunds are achieved by creating and destroying sub smart contract, not by direct writes and erases of the storage.

The idea for the Chi token is based on the original Gastoken GST2 implementation. We saw that there were ways to improve the efficiency with:

  • Reducing the smart contract address size by mining a private key with  Profanity address generator, which allowed us to decrease size of the sub smart contracts by 1 byte.
  • Using CREATE2 instruction to deploy sub smart contracts for their efficient address discovery during burning process.
  • Fixing ERC20 incompatibilities of GST2

How much is Chi better than GST2?

The Chi token is 1% more optimized for minting, and 10% more efficient for burning.

Image for post

Gastokens efficiency comparison. See  https://www.desmos.com/calculator/9z3hnwzbbl

y = 15000 * x / (20065 + 5065 * x) // GST1
y = 24000 * x / (35974 + 6689 * x) // GST2
y = 24000 * x / (35678 + 6053 * x) // CHI

How Chi can be used?

The deployment of a Ethereum smart contract requires substantial gas, and it could cost you for example between $5 and $10 per million of gas, while regular smart contract could have size of several millions of gas. But burning Chi tokens in the same transaction would reduce these costs by almost the half.

We have built on  ETHGlobal HackMoney Online Hackathon such a tool called  Deployer.eth.

The support of Chi token can be integrated in any smart contract with just a few lines of code by using following modifier:

modifier discountCHI {
    uint256 gasStart = gasleft();
    _;
    uint256 gasSpent = 21000 + gasStart — gasleft() + 16 *
                       msg.data.length;
    chi.freeFromUpTo(msg.sender, (gasSpent + 14154) / 41947);
}

In this case, Chi tokens will be burned from the caller’s wallet (Chi tokens should be approved to the contract by the user).

In case of burning Chi tokens from the contract itself (rather than from a user’s wallet), you need to change msg.sender in the chi.freeFromUpTo function to address(this). And don’t forget to top up your contract with Chi tokens.

How can you mint Chi tokens?

You can mint Chi tokens directly on Etherscan. Another option is  the Chi Minter on 1inch. To use it, you need to deactivate all exchanges, except for the Chi minter.

Image for post

Chi Minter on 1inch

The maximum minting limit is 140 Chi tokens, which, in turn, is explained by the block limit. We deliberately use about one half of the block, so that miners won’t reject this type of transaction, which is less profitable for them.

If, for instance, you swap 1 ETH using Chi Minter, you get 140 Chi tokens and pay 20 GWEI for gas. But we won’t spend the entire 1 ETH as the minting of 140 Chi tokens doesn’t cost that much. Only what is actually spent will be spent:

5,125,271 gas x 20 GWEI = 5125271*20*1e9/1e18 = 0.10250542 ETH 

So, only about 0.1 ETH will be spent, rather than 1 ETH.

One other thing. When you mint Chi tokens and indicate a low gas price, your wallet will be blocked. Therefore, we advise that you use a separate wallet specifically for minting Chi tokens.

How can you trade Chi Gastoken

It is also possible to trade Chi token on 1inch. For that you need to select Chi in the from token drop down and a token you wish to get in the to token dropdown. 1inch find the best place where to sell your Chi token.

Very important to understand for everyone:

Imagine Chi token as tokenized version of actual gas price on Ethereum. Means if the gas price grow. Chi token price also grow. If gas price in Ethereum drops, the same would also happen with Chi.

Image for post

Selling Chi token on 1inch for the best market price

Of course you can set a limit order on 1inch with the rate you wish.

Image for post

Limit order on 1inch

How to deploy a smart contract with less gas costs?

You need to approve the  Chi token to deployer.eth. To do that, go to the _Write Contract _section on Chi. Find the approve function and trigger it with the deployer.eth address and approval amount.

Image for post

Click on the _Deploy _button on  remix.ide and copy data to deploy (0x6080604…). Don’t click on confirm.

Image for post

Image for post

Go to the _Write Contract _section on the  deployer.eth contract and paste the deploy data to chiDeploy for Chi burning. Click Write and confirm the transaction in the popup MetaMask window.

Image for post

Here we are! Only 51.18% of gas was used and 6 Chi tokens were burned.

Image for post

Finally, go to the _Internal Transactions _section. There, you can find the deployed contract address. Just find _create_0 _below the Type Trace Address. In this line, below the _To _column you can see the deployed contract address.

Image for post

Now go ahead and check out Chi for yourself!

Read more ☞ What is 1inch (1INCH) | What is 1inch Exchange | What is 1INCH token

Would you like to earn CHI token right now! ☞ CLICK HERE

Looking for more information…

☞ Website
☞ Explorer
☞ Source Code
☞ Coinmarketcap

Thank for visiting and reading this article! I’m highly appreciate your actions! Please share if you liked it!

#blockchain #bitcoin #crypto #chi gastoken #chi

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 

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 

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

aaron silva

aaron silva

1621844791

SafeMoon Clone | SafeMoon Token Clone | SafeMoon Token Clone Development

The SafeMoon Token Clone Development is the new trendsetter in the digital world that brought significant changes to benefit the growth of investors’ business in a short period. The SafeMoon token clone is the most widely discussed topic among global users for its value soaring high in the marketplace. The SafeMoon token development is a combination of RFI tokenomics and the auto-liquidity generating process. The SafeMoon token is a replica of decentralized finance (DeFi) tokens that are highly scalable and implemented with tamper-proof security.

The SafeMoon tokens execute efficient functionalities like RFI Static Rewards, Automated Liquidity Provisions, and Automatic Token Burns. The SafeMoon token is considered the most advanced stable coin in the crypto market. It gained global audience attention for managing the stability of asset value without any fluctuations in the marketplace. The SafeMoon token clone is completely decentralized that eliminates the need for intermediaries and benefits the users with less transaction fee and wait time to overtake the traditional banking process.

Reasons to invest in SafeMoon Token Clone :

  • The SafeMoon token clone benefits the investors with Automated Liquidity Pool as a unique feature since it adds more revenue for their business growth in less time. The traders can experience instant trade round the clock for reaping profits with less investment towards the SafeMoon token.
  • It is integrated with high-end security protocols like two-factor authentication and signature process to prevent various hacks and vulnerable activities. The Smart Contract system in SafeMoon token development manages the overall operation of transactions without any delay,
  • The users can obtain a reward amount based on the volume of SafeMoon tokens traded in the marketplace. The efficient trading mechanism allows the users to trade the SafeMoon tokens at the best price for farming. The user can earn higher rewards based on the staking volume of tokens by users in the trade market.
  • It allows the token holders to gain complete ownership over their SafeMoon tokens after purchasing from DeFi exchanges. The SafeMoon community governs the token distribution, price fluctuations, staking, and every other token activity. The community boosts the value of SafeMoon tokens.
  • The Automated Burning tokens result in the community no longer having control over the SafeMoon tokens. Instead, the community can control the burn of the tokens efficiently for promoting its value in the marketplace. The transaction of SafeMoon tokens on the blockchain platform is fast, safe, and secure.

The SafeMoon Token Clone Development is a promising future for upcoming investors and startups to increase their business revenue in less time. The SafeMoon token clone has great demand in the real world among millions of users for its value in the market. Investors can contact leading Infinite Block Tech to gain proper assistance in developing a world-class SafeMoon token clone that increases the business growth in less time.

#safemoon token #safemoon token clone #safemoon token clone development #defi token