「help」といえば助けるという意味でおなじみですが、けしてそれだけで済むような言葉ではありません。
誰かを助けるということは、その人をどうこうすることによって、その人が抱えている困難を取り除く、ということです。
なので「cannot help」で、助けられないという意味の他に、どうすることもできないとか、取り除くことができないなどの意味に使われることがあります。
特に何らかの行為に対して、どうすることもできない、取り除くことができない、避けることができない、という意味合いで使われます。
I cannot help laughing.
笑うという行為に対して、どうすることもできない、手立てがない、だから笑うという行為がそのままにされている、笑うという行為を取り除くことが出来ずにそのままになってしまっている、つまりは笑うという行為を禁じ得ない、ということです。
この場合、我慢することができないって感覚に近いです。
自分で自分を制御できないって感じですね。
I couldn't help having some dessert.
[デザートを食べすにはいられなかった]
自分の制御や支配の枠をはみ出しているため、自分ではどうすることもできないといった意味を表す「cannot help doing」ですが、動名詞の「doing」の部分を「but+動詞の原形」で書き換えて表現されることもよくあります。
I cannot help but admire her.
[彼女を称賛せずにはいられない]
「cannot help」はどうすることもできない、手立てがないみたいな意味ですが、そのあとの「but admire」は褒めるという行為を除いて、という意味です。
どうすることもできないけど褒めることだけはできる、みたいなニュアンスですね。
あるいは、「help」がそれだけだと取り除くという意味なのか助けるという意味なのか判別がつきにくいところを、後ろに「but」を置いて「help but」とすることで、取り除くという意味であることを明確にしている、とも捉えることができます。
つまり、彼女を褒めるという行為を取り除くことができない、どうしても褒めてしまう、みたいなニュアンスです。
こういった「一部の例外を除いて」という意味の「but」の使われ方として、「have no choice but to do」という慣用表現があります。
I had no choice but to admire her.
[彼女を褒めるしか選択肢がなかった]
ただこの場合は、状況的にそうするしかなったみたいな意味になります。
別に褒めたかったわけではないけど、あの場では状況的に褒めるしかなかった、みたいな。
それに対して「cannot help but do」の方は、気持ち的にそうすることを抑えることができない、だからそうしてしまう、みたいな意味合いです。
Everyone couldn't help but applaud her.
[誰もが彼女に拍手を送らずにはいられなかった]
自分の制御や支配が及ばないという意味を持つ「cannot help」は、ときにやむを得ないとか、仕方ないといった不可抗力を表すこともあります。
I couldn't help overhearing their conversation.
[私は彼らの会話を聞いてしまいました]
そんなつもりはなかったけど、やむを得ずそうなってしまったって意味合いです。
また、受け身の形をとって、とある状況を指し「そいつはどうしようもない」みたいな意味で使われることもあります。
It's too bad that we have to leave him, but it can't be helped.
[彼と別れるのは非常に残念だが、それはどうすることもできない]
「cannot help」が対象をどうこうすることができないという意味で使われるのに対し、「can help」が対象をどうこうすることができるという意味で使わることがあります。
たとえば「if I can help it」で「私がそれをどうこうできるのであれば」という意味で使われたりします。
I don't want to do that if I can help it.
[できることならやりたくないです]
他にも「can help」(対象をどうこうすることができる)がこんな使われ方をすることも。
Can I help it if no one listens to my advice?
[誰も私の言うことを聞かない場合、それを私がどうにかすることができますか]
要は、「それって私が悪いんでしょうか?」みたいな意味合いですね。
また「cannot help」が自分の制御や支配が及ばないという意味を含むために、そのあとに「oneself」を置いて単純に自分自身を制御できないという意味合いで使われることもあります。
その場合でもやはりこれまで同様、どうすることもできない、どうしようもない、仕方がない、といったことを表しています。
I knew I shouldn't go there, but I couldn't help myself.
[そこに行くべきじゃないとはわかっていたが、自分を制御できなかった]
このように「help」をただの「助ける」という意味で捉えるんではなく、「対象をどうこうして丸く収める」みたな広い意味合いで捉えていれば、「cannot help doing」などの発展系の「help」の使われ方にも対処できるでしょう。
ちなみに「cannot help doing」、「cannot help but do」のほかに、同じ意味として「help」を使わない「cannot but do」という表現もあります。
「cannot」が「できない」、「but do」が「その行動を除いて」、なので「cannot but do」で「その行動だけしかできない」という意味になります。
「cannot help doing」や「cannot help but do」同様、どうしようもない、そうせざるを得ないといった意味で使われます。
If that happens, I cannot but run away.
[もしそうなったら逃げ出すしかない]
ただこの「cannot but do」、参考書とかに載っているのを目にするくらいで、実際に使われているのはあまり見たことがありません。