MinHash for dummies

Duplicate document detection is becoming increasingly important for businesses that have huge collections of email, web pages and documents with multiple copies that may or may not be kept up to date.

MinHash is a fairly simple algorithm that from all my Googling has been explained very poorly in blogs or in the kind of mathematical terms that I forgot long ago. So in this article I will attempt to explain how MinHash works at a practical code level.

Before I start, please take a look at http://infolab.stanford.edu/~ullman/mmds/ch3.pdf. That document goes into a lot of theory, and was ultimately where my understanding on MinHash came from. Unfortunately it approaches the algorithm from a theoretical standpoint, but if I gloss over some aspect of the MinHash algorithm here, you will almost certainly find a fuller explanation in the PDF.

I'll also be using pseudo Java in these examples instead of traditional math. This means when I use terms like Set, I am referring to the group of classes that implement a Set in Java. Of course a set in Java shares a lot of properties with a set in maths, but keep in mind that this is written from a developers point of view.

What does it mean when we talk about document similarity?  

The whole point of MinHash is to efficiently answer the question "How similar is this document to that document".

Before we can answer that question, we need to look at a more simple example of two sets of strings and determine how similar they are.

Here are our two sets:

Set a = new Set(["chair", "desk", "rug", "keyboard", "mouse"]);
Set b = new Set(["chair", "rug", "keyboard"]);

A measure of how similar these two sets are is known as the Jaccard Coefficient. It is calculated as number of common elements / (total number of elements - number of common elements).

In our case we have 3 common elements: "chair", "rug" and "keyboard". We have a total of 8 elements. So the Jaccard Coefficient  = 3 / (8 - 3) = 0.6, or 60%. http://www.planetcalc.com/1664/ is an online calculator that you can play around with to determine the similarity of two sets.

Documents as sets

While a document can be though of as a giant set of words, we don't just break down a document into individual words, place them in a set and calculate the similarity, because that looses the importance of the order of the words. The sets

Set a = new Set(["I", "went", "to", "work", "today"]);
Set b = new Set(["today", "I", "went", "to", "work"]);

would be considered 100% similar, even though they clearly are not.

Instead we break a document down into what are known as shingles. Each shingle contains a set number of words, and a document is broken down into total words - single length + 1 number of shingles. So if a document contained a single sentence of "The quick brown fox jumps over the lazy dog", that would be broken down into the following 5 word long shingles :
  1. The quick brown fox jumps
  2. quick brown fox jumps over
  3. brown fox jumps over the
  4. fox jumps over the lazy
  5. jumps over the lazy dog
So our document as a set looks like:

Set a = new Set(["The quick brown fox jumps", "quick brown fox jumps over", "brown fox jumps over the", "fox jumps over the lazy", "jumps over the lazy dog"]);

These sets of shingles can then be compared for similarity using the Jaccard Coefficient.

Optimizing the process

So we now have a way to compare two documents for similarity, but it is not an efficient process. To find similar documents to document A in a directory of 10000 documents, we need compare each pair individually. This is obviously not going to scale well.

What we can do to reduce some cycles is compare sets of randomly selected shingles from two documents. So for a document that is 10000 words long, we break it down into 9996 shingles, and randomly select say 200 of those to represent the document. If the second document is 20000 words long, we boil that down from 19996 shingles to another set of 200 randomly selected shingles.

Now instead of matching 9996 shingles to 19996 other shingles, we are are comparing 200 shingles to another 200 shingles. We have reduced our workload at the expense of accuracy, but this is still good enough for most scenarios.

NOTE
So just how much accuracy did we sacrifice by comparing only a small subset of randomly selected shingles? I actually don't know, but I assume it sits on a bell curve where the number of random selections improves the accuracy to a point where more random selections won't provide any meaningful increase in accuracy. If you know the math behind this, please leave a comment.

I chose 200 random selections after reading http://blog.cluster-text.com/tag/minhash/.

Computing and saving the random shingle selections

So this is where MinHash comes in.

We could save the 200 randomly selected shingles, but storing variable length strings kinda sucks. It complicates database design and comparing strings is slow.

The clever part about MinHash is that it allows us to save integers instead of strings, and also takes the hassle out of randomly selecting shingles. It works like this.

1. Break down the document a set of shingles.
2. Calculate the hash value for every shingle.
3. Store the minimum hash value found in step 2.
4. Repeat steps 2 and 3 with different hash algorithms 199 more times to get a total of 200 min hash values.

At this point instead of 200 randomly selected shingles, we have 200 integer hash values. This is effectively a random selection of shingles, because a good hash algorithm is supposed to generate a number that is as likely to be large as it is likely to be small. This kind of distribution of hash codes is what hashing is all about, so selecting the smallest hash is, for all intents and purposes, a random selection of a shingle.

Um, 199 more hash algorithms? WTF!

So you see the String.hashCode() method, but where do these other 199 hash codes come from? This is the step that most explanations on the MinHash algorithm conveniently leave out.

The short answer is that you XOR the value returned by String.hashCode() with 199 random numbers to generate the 199 other hash code values. Just make sure that you are using the same 199 random numbers across all the documents.

If you want some more detail on why this works, see http://stackoverflow.com/a/19711615/157605.

Great, but I still have to compare every document to every other document. Can this be optimized?

This is where the second neat trick of MinHash comes in. 

Locality sensitive hashing (LSH) involves generating a hash code such that similar items will tend to get similar hash codes. This is the opposite of what .hashCode() does.

LSH allows you to precompute a hash code that is then quickly and easily compared to another precomputed LSH hash code to determine if two objects should be compared in more detail or quickly discarded.

We don't actually calculate a LSH hash code as such, but the idea of a boiling down a complex object (like our collection of minhash codes) into something that is quickly and easily compared with other complex objects is still applicable.

What we do is take the collection of minhash values, and categorize them into bands and row. For the sake of simplicity we'll assume each document has 20 minhash values. We will break them down into 5 bands with 4 rows each. Also for the sake of simplicity we'll assume that .hashCode() (and any number XORed with it) results in a number between 0 and 9.

So conceptually the minhash values from 5 documents in the first of the 5 bands and its rows looks like this.

Band One
MinHash Algorithm One MinHash Algorithm Two MinHash Algorithm Three MinHash Algorithm Four
Document One 1 3 6 0
Document Two 2 3 1 0
Document Three 1 3 6 0
Document Four 2 1 3 1
What we are looking for are rows within a band that are the same between documents. Document One and Document Three in this case both have rows with values 1, 3, 6, 0. This tells us that these two documents should be compared for their similarity.

Although it is not shown here, you should look through Bands Two - Five looking for documents that share rows. Any documents that share rows in any bands should be compared for their similarity. 

This is useful when you have a document, and you want to know which other documents to compare to it for similarity. I'll assume that the minhash values are stored in SQL, so to get out candidates for comparison you would write:

SELECT DocName 
FROM Documents
WHERE (
BandOneMinHashAlgorithmOne = 1 AND
BandOneMinHashAlgorithmTwo = 3 AND
BandOneMinHashAlgorithmThree = 6 AND
BandOneMinHashAlgorithmFour = 0
) OR
(
BandTwoMinHashAlgorithmOne = # AND
BandTwoMinHashAlgorithmTwo = # AND
BandTwoMinHashAlgorithmThree = # AND
BandTwoMinHashAlgorithmFour = #
) OR (
BandThreeMinHashAlgorithmOne = # AND
BandThreeMinHashAlgorithmTwo = # AND
BandThreeMinHashAlgorithmThree = # AND
BandThreeMinHashAlgorithmFour = #
) OR (
BandFourMinHashAlgorithmOne = # AND
BandFourMinHashAlgorithmTwo = # AND
BandFourMinHashAlgorithmThree = # AND
BandFourMinHashAlgorithmFour = #
) OR (
BandFiveMinHashAlgorithmOne = # AND
BandFiveMinHashAlgorithmTwo = # AND
BandFiveMinHashAlgorithmThree = # AND
BandFiveMinHashAlgorithmFour = #
)

This explanation completely glosses over why this works and what combination of bands and rows you should construct when looking for similar documents. If you want to get into that detail, take a look at http://infolab.stanford.edu/~ullman/mmds/ch3.pdf.

Comments

shivam said…
The most important papers that are needed to start a bank account in Poland are a residency card for ex-pats who got their residency allowance in Poland or a passport. The interested candidates must note that the needed papers may vary from bank to bank. There are some financial institutions that only require identification evidence, while others might require residential proof.

Opening A Bank Account For Companies In Poland
abhisekhh1 said…
There are no circumstances restricting how to establish a new company in Slovenia - anybody might enlist an business, and the technique is no different for all EU, EEA Part Nations residents and for residents of the Swiss Confederation.
abhisekhh1 said…
It is free, basic and quick to lay out a business. It ought to take under three days from presenting the application. On the off chance that candidate get a computerized testament, they may likewise lay out the business by means of Slovenian Business Point entrance or at one of the SPOT point areas.
murtaza said…
If you’ve managed to incorporate the company in Asia during the current covid-19 pandemic, Congratulations, and congratulations on a job well accomplished!

The next issue is opening an account with a bank. This is a crucial step because it will facilitate your business’s operations as well as all of your transactions (including paying your employees and vendors).

Open a Bank Account in Singapore During Covid-19: Required Documentation
abhisekhh1 said…
The benefits you get when you register a Dutch foundation are- Strong resource insurance with compelling (backhanded) control by the family without responsibility towards recipients which is truly adaptable and compelling exclusion from Dutch assessment when utilized by non-inhabitant families.
abhisekhh1 said…
A few organizations start a dutch foundation since it very well may be viable as a resource insurance instrument. Family organizations like IKEA have set up their own Dutch Establishment to safeguard their gathering structure.
shivam said…
Another name for the Poland Business Visa is the Poland Schengen business visa and it is a type of permit that can be utilized to visit Poland and engage in business operations. It comes under the C-category of Schengen, and it only permits you a visit for 90-days maximum in the total period of 180 days. You can obtain it as a single, double, or even as multiple entries.
abhisekhh1 said…
A Directors’ Resolution will be needed to prove that the company was given the go ahead to open a bank account in singapore. Most banks already have a form ready for this so you only need signatures from your board.
abhisekhh1 said…
This comment has been removed by the author.
abhisekhh1 said…
This comment has been removed by the author.
abhisekhh1 said…
The purpose of a non-disclosure agreement is twofold: confidentiality and protection. Information protected by a confidentiality agreement can include everything from product specs to client rosters.
abhisekhh1 said…
Violating an non-disclosure agreement can have serious consequences — NDAs are legally binding contracts. If an employee has violated an NDA, then the company may take legal action.
shivam said…
ThePoland Type B Visa is non-outsider migration that licenses you to visit and work in Poland with the end goal of exchange or travel and friendliness.

A B1 visa grants you to enter Poland for business purposes, for example, aggregate bartering, business bunch gatherings, counsel with business partners, and property settlement.
shivam said…
Any Indian entrepreneur can make investments in the real estate sector as a way to earn money. However, after 3 years of securing an interim permit, the person can apply for permanent residency in Poland. Although, again after the next 3rd year, they can get a residence permanently, as the resident may apply for naturalization to Polish citizenship.

Read More: Poland PR Permit For Indian Entrepreneurs
abhisekhh1 said…
The proprietors of privately owned businesses can utilize the Employee Stock Option Plan to sell their portions. Organizations are permitted to make charge deductible commitments to the ESOP to purchase out the offers or the organization can utilize the ESOP to get the means to purchase the offers.
abhisekhh1 said…
Importer Exporter Code (otherwise called IEC code) is a 10-digit recognizable proof number that is given by the DGFT (Chief General of Unfamiliar Exchange), Division of Business, Legislature of India. It is otherwise called Merchant Exporter Code. Organizations and organizations should get this code to begin a business that arrangements with imports and commodity in the Indian region. It is absurd to expect to manage product or import business without this IEC code.
shivam said…
In the event that you distinguish as an outsider remaining in Poland, you can document your site of home. In such a case, you'll get your PESEL number consequently. In the event that you can't document your home, and a body needs your PESEL number, finish up an application.

Read Moore: PESEL For Foreigners
shivam said…
Furthermore, residents with Poland Permanent Residency cards are authorized to reside within the different Schengen Member States for the totality of 90 days within six months from the date of their first entry. The holder of an annual residence permit can also apply for Polish citizenship.

Benefits of Poland Permanent Residency
abhisekhh1 said…
IEC is expected by shippers to clear traditions and shipment, and to move cash to unfamiliar banks. Exporters require their Importer Exporter Code to send shipments and get cash from unfamiliar banks. To put it plainly, no shipper/exporter can work in India without getting the IEC.
abhisekhh1 said…
Depending on the number of shareholders and the nature of business, Jebel Ali free zone offers five formation types in addition to a variety of license types and license activities, allowing companies to connect directly to a market of more than 3.5 billion people.
Unknown said…
Thanks for the informative blog. M3M Capital Walk 113 is an upcoming property by M3M developers. This post lets you find the best option for Gurgaon's most desirable and beautiful commercial property.

It combines commercial and residential property on a complete township that covers 60 acres of land with 800 units. Also, It has located near Dwarka Expressway, the most important role in delivering business growth.

Especially, It is a perception in a simplified form of one of the high street retail hubs. Their propose great variety in retail, Fun Zone, Food courts & service apartments. Thus, investing in these retail and office spaces can be a great option.

shivam said…
The shareholders are able to raise the capital of an SP. z.o.o by a specific amendment to the Articles of Association. The rights of shareholders include the ability to vote as well as the ability to be paid dividends & the right to receive a portion of the company’s assets in the event of liquidation of the company.

Read More: Type of Various Business forms in Poland
abhisekhh1 said…
Foreigners can register a sole proprietorship in Singapore . Locally resident authorised representative must be appointed if sole proprietor does not reside in Singapore
abhisekhh1 said…
Since LLPs and LLCs in Singapore are set up as restricted risk lawful substances, their business commitments stay inside the actual element and in this manner safeguard their individuals (accomplices and investors separately) by means of the arrangement of restricted obligation. Basically it implies that your openness is restricted to the sum you have put resources into the substance and your own resources are safeguarded.
shivam said…
In the year 2014, Polish government officials denied accepting bitcoin as a currency. However, they said that contracts that were based on the base index were full-fledged financial instruments, subject to standard guidelines.


Read more: Register for Cryptocurrency Company In Poland
shivam said…
As the cost of residence is cheap in Poland, it is matched by the wages which are also on a lower end when compared to the wages in other countries. But please remember that your money gets utilized in a better way as there are cheaper fixed rates in Poland for essential requirements like rent when compared with big nations like the United Kingdom.

Read More: Office Cost in Poland
Anonymous said…
waiting for good website designer then here you are contact R12solutions

Best Web Designing Company in Hyderabad

shivam said…
Poland is quite possibly of Europe's most industrialized locale, with a different assortment of profession open doors and monetary levels. Poland is a fantastic choice to propel your calling, gain insight, and earn enough to pay the bills. It is currently quite possibly of the most rapidly developing economy in the European Association, consequently what's to come seems promising.

Read More: Minimum Wage in Poland
abhisekhh1 said…
Tax avoidance primarily is an act of minimising one’s tax liability by using legitimate methods that are within the limits of law or methods that do not break the law. Though tax avoidance also helps a taxpayer to minimise the tax liability like tax planning, but it is not as simple, straightforward and advisable as tax planning.
abhisekhh1 said…
Some of the main Features and difference between tax planning, tax avoidance and tax evasion :
1. Consequences: Tax avoidance leads to the deferment of tax liability. Tax evasion leads to penalty or imprisonment.
2. Objective: The objective of Tax avoidance is to reduce tax liability by applying the script of law whereas Tax evasion is done to reduce tax liability by exercising unfair means. Tax planning is done to reduce the liability of tax by applying the provision and moral of law.
3. Permissible: Tax planning and Tax avoidance are permissible whereas Tax evasion is not permissible.
shivam said…
When the file for the existing and subsequent years is completed, the LLC-to-corporation will be assessed the Delaware Licensing Fee. For instance, if your LLC tries to return in 2020 but the tax for 2019 was not paid by the requirement of June 1st, you must pay tax for both years as an LLC and a C company. In other words, because you were functioning as both an LLC and a corporate in the year of conversion, 2020, you will be subject to double taxation.

Read More : Taxation for Delaware LLC to corporation conversion
Anamika Sharma said…
The Turkish government is encouraging loval and international entrepreneurs by lessening speculation related costs and establishing a more investment friendly scenerio. With the new investment incentives framework, they diminished the costs of the entrepreneurs.

Turkey company registration
shivam said…
Delaware Corporation Bylaws put forward the principles and methods that administer how your corporation is to be made due. It is critical that your bylaws are reliable with your plan of action.
shivam said…
Delaware Limited Partnerships also known as DLPs is a form of a business giant in the USA. A DLP in the USA is created by the Secretary of Delaware by receiving a certification of the limited partnership.

Read More: Aim of Limited Partnership In Delaware
shivam said…
Joining two Delaware LLCs can give significant advantages to the proprietors of the two firms So how about we get to find out about Delaware LLC Consolidation Your Business Ought to Be aware.

A consolidation could bring about a significantly bigger and all the more remarkable business, which is more interesting to expected investors and financial backers.

Read More: Delaware LLC Merger
Anamika Sharma said…
A Poland business visa may be necessary for a variety of reasons, such as forging strong financial ties, taking part in various organisational responsibilities related to business, or handling concerns relating to an already established corporate organisation.
Anamika Sharma said…
Similar to how the location of stay must be registered at the local government office, getting a Poland PESEL Number is simple and cost-effective. Typically, it can take up to 30 days to get a PESEL number.
Anamika Sharma said…
Poland is seeing a lot of technological developments that might be quite helpful for business owners wishing to register their companies there. For investments involving innovative work, more investors are drawn to these regions.

Company registration in Poland
Anamika Sharma said…
Dividend tax in Poland

According to the Polish involvement exclusions, Polish businesses are not required to keep tax on profits if the payment receiver is based in some other EU country and receives the necessary taxes from its personnel across the globe. Investment income is subject to a 19% tax rate in Poland.

Anamika Sharma said…
A corporate bank account in Poland is among the best for business owners who manage various types of businesses in Poland and, additionally, for foreign nationals employed in Poland who need to get their salaries.
Anamika Sharma said…
List of Benefits Of Registering A Company In Poland

- Strategic geographical location
- Tax benefits
- Government grants
- Largest manufacturing centre
- Investments
- Various business opportunities
Anamika Sharma said…
The current economic climate requires a starting investment of at least 30.000 PLN in order to open a restaurant in Poland. Most of the costs will go toward leasing the space and covering the entire expenses.

Anamika Sharma said…
Every company in Singapore is required by law to designate a company secretary. The Company Secretary in Singapore is in charge of making sure the Company complies with all applicable laws and rules. Additionally, the Secretary informs the Board Members of their formal obligations to the Organization. The Company Regulation characterizes the legitimate system in which the Secretary and the chiefs should work.

shivam said…
EIN is a useful tool to secure your identity and assist prevent identity theft. Your risk of identity theft decreases if you don’t have to give customers or vendors your Social Security number (SSN) if you have an EIN Number in Delaware, which reduces the likelihood that thieves will steal and obtain your private information.
shivam said…
An LLC is the most common entity structure businesses will use to transition from a sole proprietorship. It’s the most flexible corporate vehicle and can offer a variety of perks to help a company grow.

Read More: Delaware vs Florida LLC
shivam said…
An adult who is designated as a Polish tax citizen is subject to Polish taxable income on all of their international earnings, according to Polish legislation. The taxpayer is regarded to have an unrestricted tax burden under these situations.

Read More: Taxes In Poland
real estate said…
Pareena Affordable Housing is offering 1, 2 and 3 BHK apartments with all modern amenities in sector 68 Gurgaon.PAREENA GROUP provides Pareena Rama Homes Affordable Housing Sector 68 Gurgaon.Pareena Rama Homes sector 68 presents an residential apartments in which one could fulfill his material and creative pursuits with ease and comfort for the entire lifetime. For more details like sitteplan,pricelist,floorplan,payment plan call: 9582821821.
visit:https://www.affordablehousingsgurgaon.com/pareena-affordable-housing-sector-68-gurgaon/
Anonymous said…
Your article is very informative.
Real Estate in Shadnagar
murtaza said…
To operate a branch office, you don’t need to have a minimum number of shareholders. For either a public limited company or a private limited business, each stakeholder must have a minimum of one share.

Spain Company Registration
murtaza said…
A joint-stock corporation, also known as a company, is restricted by shares. A stock market is a place where shares can be traded. The Austrian law stipulates a single supervisory board for each joint-stock company that has a minimum of three members. Joint-stock companies are legal entities that can be created with one or two shareholders and at least EUR 70,000 in principal investment.

Austria Company Registration
murtaza said…
Sweden is a nation blessed with business-friendly rules and laws. It holds the reputation of being one of Europe’s business-friendliest countries. The process to register a company in Sweden is simple and straightforward once you’ve got a grasp of a few fundamental concepts
Sweden Company Registration
murtaza said…
The notary fees are calculated by the share capital of the company and will be greater in the case of an SPRL when compared with an SA.
The publication fee will be charged to the time that they are paid when the Articles of Association are published in the Belgian Official Journal; around 250 euros.

Belgium Company Registration
murtaza said…
The process of registering a business in Switzerland is a way to take your business to the highest possible level. Switzerland is among the most trustworthy and famous nations worldwide to incorporate a business. The strong banking and insurance industries and the stability of the economy,

Switzerland Company Registration
murtaza said…
Company Name: You may reserve the business name online. procedure and procedure to reserve names for the business. The applicant must first make sure that the business name is reserved in compliance with the guidelines in the 2014 Companies Act. To do this, the business would need to check the search registry to determine the availability of the company’s name.
Ireland Company Registration
murtaza said…
If any of the affiliate companies become insolvent, the creditors will get their compensation only from the subsidiary company, and not from the other subsidiaries or the holding company. If one or more of the subsidiary companies fails the business will continue operating and assets worth a lot of money will be secured.
Holding Company in Ireland
murtaza said…
The Recovered Economy is the reasons to invest in Ireland. The demise of the showcase for property ten years ago affected Ireland more than other nations. However, by 2016 the mood had changed, with reports coming out that the small nation was growing as quickly as China and was booming with real estate in the exhibition. The Irish economics’ robust and continuous recovery has earned it the status of a top student among its peers in Europe and has accelerated development in the country.
Reasons to Invest in Ireland
murtaza said…
A Delaware Certificate of Incorporation is a document filed with the Delaware Corporate Division to create a Delaware corporation. When forming Delaware entities, the organizational document that is categorized with the Delaware Secretary of State is called a Certificate of Formation (LLC), Partnerships.
Delaware Certificate of Incorporation
needleskart said…
footwear sourcing
www.needleskart.com
techseeholic said…
best digital marketing agency
techseeholic.com
Anonymous said…
Anonymous said…
I have read your blog and learned many new things. Thank you for this post.
I also worked in the field of realestate in which we provide new properties/apartment/flats. So, if you are looking for best real estate company in Gurugram then please visit our website.
sd said…
"Signature Global City 79bSignature Global City 79b, low-rise independent floors in Sector 79b, Gurgaon. This residential project is designed by Padma Bhushan – Hafeez Contractor, and developed by one of the prominent real estate developers in Gurgaon – Signature Global. It is spread across 12.5 acres of land, set amidst the Aravallis and surrounded by vast acres of verdant forest. This project offers 2 BHK + 2T, 3 BHK + 3T, and 3 BHK + 3T + Study Room.

It gives you the gift of healthy nature in an ultra-modern setting, and park yourself in luxury and cherish the surrounding nature."
M3M Antalya Hills 79M3M Antalya Hills offers Low Rise Luxury Floors in Sector 79, Gurgaon. This residential Project is developing over 102 acres of land by M3M India. Experience joy, laughter and warmth in the serene environment. Say Goodbye to the stressful life and say hello to soulful living in the hills!

These independent floors are designed to give you a redesigned view of the hill-facing Theme Based Park or waterbody that provides both a luxury lifestyle and peace in the lap of nature.

M3M Antalya Hills 79 offers 2.5 BHK & 3.5 BHK luxury apartments; each floor is open on two sides. It features independent floors with private space in the basement, and it offers a wide balcony to feel the fresh air blowing from the Aravalli hills!

At Antalya hills gurgaon, your elders get to relax their minds amid the greenery, away from the chaotic noise of the city. Your children can learn from the city while still enjoying themselves in the lap of nature. Here you can enjoy the constant cooling of public areas with the perfect balance of sunlight, shade, and natural ventilation.

There are exceptional amenities planned for every age group and every kind of you, “the calm, the social, the cheerful, and the sporty at M3M Antalya hills 79. Every pocket is equipped with a club with curated amenities to cater to the needs of all age groups. Now, the community lifestyle has become the new normal.

It offers amenities like a sports arena, multiple courts, Kid’s play area, a multi-tier security system, a swimming pool, private space in the basement and an AER lounge. M3M Antalya Hills floors are fully loaded with features like Modular Kitchen, Italian Marble, AC, False-ceiling, Wardrobe, TV Unit, Loaded Washrooms, etc. It also offers sustainable features “with the sustainable township and energy-efficient apartments, now save money on bills to spend on memories with your family.”
repeater setup said…
In larger areas wireless transmission is required, re.rockspace.local wifi extender function as a repeater to boost the signal and fend off it from dead zone area. Primarily, re.rockspace local wifi extender works at 2.4G band
ananya said…
Success in business requires a unique blend of vision, strategy, and relentless determination. Entrepreneurs must adapt to a dynamic marketplace, seizing opportunities and embracing innovation. Building strong relationships, delivering value, and maintaining integrity are key to long-term growth. With the right mindset and hard work, businesses can flourish and make a lasting impact.
PREFER .
Anonymous said…
In the ever-changing world of business, adaptability is key . Success lies in recognizing opportunities, embracing innovation, and staying ahead of the competition. With a clear vision, strategic planning, and a customer-centric approach, businesses can thrive in any environment. Remember, resilience and flexibility pave the path to long-term prosperity.
ananya said…
In the ever-changing world of business, adaptability is key . Success lies in recognizing opportunities, embracing innovation, and staying ahead of the competition. With a clear vision, strategic planning, and a customer-centric approach, businesses can thrive in any environment. Remember, resilience and flexibility pave the path to long-term prosperity.
https://ondemandint.com/blog/company-act-in-germany/
Mitchell Cahill said…
This article exemplifies the saying "short but sweet." It's a delightful read that leaves a lasting impact. I was hooked on the FPS test from the moment I started playing. The immersive atmosphere and intense gameplay kept me coming back for more. Using this profile you will get information about FPS Test.
Tech Bharat said…
"MinHash for Dummies" provides a fantastic introduction to an essential concept in data analysis and information retrieval. The article expertly breaks down the complexities of MinHash and presents it in a way that is accessible to beginners, making it an invaluable resource for anyone looking to understand the fundamentals of this powerful technique. Also check out Silver Exchange
techburner said…
Kudos to the author for delivering an exceptional piece of content. I was captivated from start to finish and learned so much along the way. Looking forward to the next article!
radhe exchange demo
sky change said…
Your insights are incredibly valuable. I've learned so much from this post and will be revisiting often as I continue to learn more.download our app- sky exchange app
MBWhatsApp said…
I read through your blogs, and what I discovered therein was quite fantastic. Please keep up the good work. We really appreciate the good information you offer with us.
ABWhatsApp
Looking for the best face scrub for men The AGE Honey & Oats Scrubber is a natural and gentle scrub that exfoliates and nourishes your skin, leaving it feeling soft, smooth, and refreshed.
Thanks for sharing this valuable content. Its Really very useful for me.
Properties in Dwarka Expressway - It offers prime real estate in Gurgaon. Boasting proximity to Delhi, excellent connectivity, and future growth potential, it's a hotspot for investors seeking high-value properties.
AI in Digital Marketing: How Companies Can Use AI to Increase Revenue


Businesses and brands have started to understand the advantages of doing digital marketing with the aid of artificial intelligence. With the use of this revolutionary technology, many strategies of communicating with the intended audience may be developed. AI in digital marketing can be used in the following ways: Personalized Content: To provide personalized content, AI systems examine user behavior, demographics, and preferences.
Chatbots and Virtual Assistants: These artificial intelligence (AI)-driven tools automate client interactions and deliver prompt answers to their questions.
Predictive analytics: AI systems examine vast volumes of data to spot patterns and trends that may be used to forecast future market trends as well as consumer behavior and preferences.


Search Engine Optimization Services
Social Media Marketing Services
Pay Per Click Services
Content Marketing Services
Website Designing Services
Web Development Services
Magento Development Services
Wordpress Development Services
Very nice article
If you are looking for winters cream which will make your dry or oily skin soft and supple then Aromatic Garden Essence has a secret it’s winter day cream for nourish and hydrate your skin. AGE knows that change in lifestyle and seasons your skin becomes oily, dry or mature that’s why they made a product enriched with natural ingredients & a light weight product for your all skin type. It is a sun protection cream with SPF and protect from pollution.
Op zoek naar Java-experts in Utrecht! Mis deze kans niet om te werken voor een toonaangevend softwarebedrijf, waar je je Java-ontwikkelingsvaardigheden kunt laten zien en het team kunt helpen uitbreiden.
JAVA jobs in netherlands.





Java-ingenieurs zijn zeer gewild en Nederland is een krachtpatser op het gebied van digitaal talent.
JAVA jobs in netherlands.

Anamika Sharma said…
Prepared to initiate your business venture in Canada? Opt for IncPass as your reliable ally and commence your journey towards prosperous expansion into one of the globe's most vibrant and lucrative markets
Anonymous said…
फैशन की दुनिया में जहां लगातार ट्रेंड बदलते रहते हैं, वहीं कुछ नाम ऐसे हैं जो अपनी प्रतिभा के कारण हमेशा चमकते रहते हैं। उन्हीं चमकते सितारों में से एक नाम सब्यसाची मुखर्जी भी है। सब्यसाची एक जाने माने डिजाइनर हैं जो भारतीय संस्कृति की बारीकियों को अपने कपड़ों में बखूबी दर्शाते हैं। तो चलिए, इस पोस्ट के माध्यम से Sabyasachi Net Worth के साथ इस शख्स से जुडी सभी जानकारी को प्राप्त करते हैं।

Sabyasachi Net Worth, Age, Bio, Wife, Income [2024 Updated]
Car dry cleaning services in Delhi are a great way to keep your vehicle looking brand new. They offer convenience and excellent results for a reasonable price.

Luxurious living is possible at the M3M Crown Sector 111 Gurgaon, thanks to its lavish apartments and top-notch features. Its convenient location close to the Dwarka Expressway ensures convenience of access and an upscale lifestyle. This is a great option for individuals looking for elegance and convenience in the NCR area because it emphasizes modern architecture and comfort.
M3M properties said…
M3M Properties offers luxurious and innovative real estate solutions, with a focus on quality craftsmanship and modern design. From residential to commercial spaces, M3M delivers projects that redefine urban living. With a commitment to excellence, M3M Properties creates spaces that inspire and elevate lifestyles.
For More Information Visit our Website -
Oldest Older 201 – 289 of 289

Popular posts from this blog

Authenticating via Kerberos with Keycloak and Windows 2008 Active Directory

Fixing OpenVPN "Authenticate/Decrypt packet error: cipher final failed"